سؤال

أتذكر بوضوح أنه في وقت ما، كان المبدأ التوجيهي الذي قدمته Microsoft هو إضافة اللاحقة "Base" إلى فئة مجردة لتجنب حقيقة أنها كانت مجردة.وبالتالي، لدينا فئات مثل System.Web.Hosting.VirtualFileBase, System.Configuration.ConfigurationValidatorBase, System.Windows.Forms.ButtonBase, ، وبالطبع، System.Collections.CollectionBase.

لكنني لاحظت مؤخرًا أن الكثير من الفئات المجردة في إطار العمل لا تتبع هذه الاتفاقية.على سبيل المثال، الفئات التالية كلها مجردة ولكنها لا تتبع هذا العرف:

  • System.DirectoryServices.ActiveDirectory.DirectoryServer

  • System.Configuration.ConfigurationElement

  • System.Drawing.Brush

  • System.Windows.Forms.CommonDialog

وهذا بالضبط ما يمكنني تحقيقه في بضع ثوانٍ.لذلك ذهبت للبحث عما تقوله الوثائق الرسمية للتأكد من أنني لست مجنونًا.لقد وجدت أسماء الفئات والهياكل والواجهات على MSDN في إرشادات التصميم لتطوير مكتبات الفصل.من الغريب أنني لم أجد أي إشارة إلى المبدأ التوجيهي لإضافة "قاعدة" إلى نهاية اسم الفصل الملخص.ولم تعد الإرشادات متوفرة للإصدار 1.1 من Framework.

إذن هل أخسره؟هل كان هذا المبدأ التوجيهي موجودًا من قبل؟هل تم التخلي عنه دون كلمة واحدة؟هل قمت بإنشاء أسماء فئات طويلة بنفسي خلال العامين الماضيين مقابل لا شيء؟

شخص ما يرمي لي عظمة هنا.

تحديثأنا لست مجنونا.المبدأ التوجيهي كان موجودا. اشتكى كرزيستوف كوالينا من هذا الأمر في عام 2005.

هل كانت مفيدة؟

المحلول

في إرشادات تصميم الإطار تنص ص 174 على ما يلي:

يتجنب تسمية الفئات الأساسية بلاحقة "أساسية" إذا كانت الفئة مخصصة للاستخدام في واجهات برمجة التطبيقات العامة.

أيضًا : http://blogs.msdn.com/kcwalina/archive/2005/12/16/BaseSuffix.aspx

نصائح أخرى

أيضًا، إذا كانت الفئة المجردة تحتوي على عدد قليل من الأعضاء الثابتين الذين سيتم استخدامهم، فيمكن أن تصبح "القاعدة" قبيحة.

لا أتذكر مثل هذا المبدأ التوجيهي.أعتقد أنه يجب عليك استخدام التسمية المنطقية.في بعض الأحيان، يتم تصميم الفئة المجردة فقط لتوفير وظائف مشتركة لبعض الفئات (كأداة)، والتي أعتقد أنها يجب أن تحتوي على اللاحقة.ومع ذلك، في بعض الحالات، قد ترغب في استخدامه كأساس للتسلسل الهرمي لتعدد الأشكال والذي لا يكتمل في حد ذاته.في هذه الحالات أقترح تسمية مثل الفصل العادي.

كما ترى، ربما لن تعلن عن طريقة تقبل ButtonBase كمعلمة.لقد تم تصميمه لتوفير الحد الأدنى من الوظائف للفئات الفرعية.ومع ذلك، قد تتمكن من علاج أ ConfigurationElement ككيان له أشكال مختلفة ولكنه غير مكتمل في حد ذاته (وبالتالي فهو مجرد)

في بعض الأحيان، لا تزال Base ضرورية، خاصة عندما تقوم بتوفير فئة محددة وفئة مجردة لشخص ما لتوسيعها لإنشاء تطبيق ملموس.
على سبيل المثالوحدة التحكم و Controllerbase (وحدة التحكم في الواقع هي أيضًا مجردة ، ولكنها توفر وظائف أكثر دلالة من Controllerbase)

اللاحقة الأساسية قبيحة عند البرمجة على واجهة، لذلك أعتقد أن إرشادات Microsoft بعدم استخدامها تنطبق عندما يتم استخدام الفئة المجردة في الغالب كواجهة.ربما ما يقصدونه بواجهة برمجة التطبيقات العامة.

النقطة المهمة هي أن هناك حالات لا يوجد فيها بديل أفضل لاستخدام اللاحقة الأساسية.

أنا أفهم الميل لتجنب Base-Suffix، ولكنني أفهم أيضًا الحاجة إلى ذلك بعض لاحقة.الآن، تعليق في هذه المقالة يقترح استخدام "النوع" كلاحقة كخيار ثانٍ لعدم استخدام أي منها.أعتقد أن هذا أمر محير، لكن فكرة أن "مثل هذه الكلمة غير الملتزمة تميل إلى الإشارة إلى أنها فئة غير ملتزمة" عالقة في ذهني.

كبديل: أفضل استخدام "النوع" كلاحقة لتوضيح الكائن على أنه "من أو ينتمي إلى عرق أو عائلة محددة" (ويكاموس:-عطوف).

مثال: DataProvider و ReflectiveDataProvider كلاهما DataProviderKind

مستوحاة من علم الأحياء حيث على سبيل المثال.ينتمي "canis lupus" إلى عائلة "Canoidea"، والتي تُترجم تقريبًا إلى "dog-ish".

مايكروسوفت تنص على:

https://docs.microsoft.com/en-us/dotnet/standard/design-guidelines/names-of-classes-structs-and-interfaces

"✓ فكر في إنهاء اسم الفئات المشتقة باسم الفئة الأساسية.هذا سهل القراءة ويشرح العلاقة بوضوح.بعض الأمثلة على ذلك في الكود هي:ArgumentOutOfRangeException، وهو نوع من الاستثناء، وSerializableAttribute، وهو نوع من السمات.ومع ذلك، فمن المهم استخدام الحكم المعقول في تطبيق هذا المبدأ التوجيهي؛على سبيل المثال، فئة Button هي نوع من أحداث التحكم، على الرغم من أن التحكم لا يظهر في اسمها."

بشكل عام، هذا يستبعد ضمنيًا استخدام "Base" في الاسم.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top