سؤال

في كثير من الأحيان في موقف حيث لدي مفهوم يمثله واجهة أو فئة، ثم لدي سلسلة من الفئات الفرعية / المساحات الفرعية التي تمددها.

على سبيل المثال: تمثل "Doigraphnode" عام عام "Doigraphnode" تمثل مورد "Doigraphnode" يمثل موارد Java A "doigraphnode" بمسار مرتبط، إلخ.، إلخ.

أستطيع أن أفكر في ثلاث اتفاقيات تسمية، وسوف نقدر تعليقات حول كيفية اختيار.


الخيار 1: ابدأ دائما باسم المفهوم.

وهكذا: doigraphnode، doigraphnoderesource، doigraphnodejavaresource، doigraphnodewithpath، إلخ.

برو: من الواضح جدا ما أتعامل فيه، فمن السهل رؤية كل الخيارات التي لدي

يخدع: ليست طبيعية جدا؟ كل شيء يبدو نفسه؟


الخيار 2: ضع الاشياء الخاصة في البداية.

وهكذا: doigraphnode، ResourcedoGraphnode، JavaresourceDoigraphnode، Pathbasedoigraphnode، إلخ، إلخ.

Pro: من الواضح جدا عندما أراها في التعليمات البرمجية

يخدع: العثور على ذلك أمر صعب، خاصة إذا كنت لا أتذكر الاسم، ونقص الاتساق المرئي


الخيار 3: ضع الاشياء الخاصة وإزالة بعض النص الزائد

وهكذا: doigraphnode، resourcenode، javaresourcenode، graphnodewithpath

Pro: ليس هذا كثيرا للكتابة وقراءة con: يبدو وكأنه CR * P، غير متناسق للغاية، قد يتعارض مع أسماء أخرى

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

المحلول

اسمهم لما هم عليه.

إذا كانت تسميةها صعبة أو غامضة، فغالبا ما تكون علامة على أن الفصل يفعل الكثير (مبدأ مسؤولية واحدة).

لتجنب تسمية النزاعات، اختر مسام أعمائكم بشكل مناسب.

شخصيا، كنت أستخدم 3

نصائح أخرى

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

بالنسبة إلى ما يستحقه، عادة ما أستخدم الخيار 3، ومن تجربتي في النظر في خيار رمز أشخاص آخرين هو أكثر انتشارا من الخيار 1.

يمكنك العثور على بعض الإرشادات في وثيقة معايير الترميز، على سبيل المثال هناك وثيقة Idesign ل C # هنا.

أنا شخصيا، أفضل الخيار 2. هذا هو عموما طريقة أسماء .NET Framework كائناتها. على سبيل المثال، انظر إلى فئات السمة. كلها تنتهي في السمة (TestMethodattribute). الشيء نفسه ينطبق على الأحداث: onclickeventhandler هو اسما موصى به لمعالج الأحداث التي تعالج حدث النقر.

عادة ما أحاول اتباع هذا في تصميم الرمز والواجهات الخاصة بي. وبالتالي فإن كاتب IUNIT ينتج كاتب stringunit وكاتب dataatableunititer. بهذه الطريقة أنا أعرف دائما ما هي فئة الأساس الخاصة بهم ويقرأ بشكل طبيعي بشكل طبيعي. رمز الوثيقات الذاتي هو الهدف النهائي لجميع المطورين رشيق حتى يبدو أنه يعمل بشكل جيد بالنسبة لي!

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

على الرغم من أنني تميل إلى استخدام الخيار 2 في وقت سابق في مهنتي البرمجة، إلا أنني أتجنبها الآن لأنك تقول أنها "غير متسقة" ولا تبدو متعامدة للغاية.

غالبا ما استخدم الخيار 3 عندما توفر الفئة الفرعية ملحق أو مواصفات كبيرة، أو إذا كانت الأسماء طويلة إلى حد ما. على سبيل المثال، يتم اشتقاق فئات اسم نظام الملفات من السلسلة ولكنها تمتد بشكل كبير فئة السلسلة وتتمتع باستخدام / معنى مختلف بشكل كبير:

يضيف directory_entry_name المشتق من السلسلة وظائف واسعة. file_name المشتق من directory_entry_name لديه وظائف متخصصة إلى حد ما. Directory_name المشتق من directory_entry_name لديه أيضا وظائف متخصصة إلى حد ما.

بالإضافة إلى جانب الخيار 1، عادة ما استخدم اسم غير مؤهل لفئة واجهة. على سبيل المثال، قد يكون لدي سلسلة انقطاعيات الفئة:

  • النص (واجهة)
  • Text_abstract (مجردة (قاعدة) فئة التعميم)
  • text_ascii (فئة ملموسة محددة لترميز ASCII)
  • text_unicode (فئة ملموسة محددة لترميز Unicode)

أنا أفضل أن الواجهة والفئة الأساسية المجردة تظهر تلقائيا أولا في القائمة الفرز.

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

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

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