c# - ترتيب العناصر في الفئات: الحقول ، الخصائص ، البنائين ، الطرق




.net coding-style (10)

هل هناك توجيه رسمي C # لترتيب البنود من حيث هيكل الفئة؟

هل تذهب:

  • الحقول العامة
  • الحقول الخاصة
  • الخصائص
  • الصانعين
  • أساليب
    ؟

أشعر بالفضول إذا كان هناك قاعدة صلبة وسريعة حول ترتيب العناصر؟ أنا نوع من جميع أنحاء المكان. أريد التمسك بمعيار معين حتى أتمكن من فعل ذلك في كل مكان.

المشكلة الحقيقية هي خصائص أكثر تعقيدا في نهاية المطاف يبحث يشبه الكثير من الأساليب ويشعرون من مكان في الجزء العلوي قبل المنشئ.

أي نصائح / اقتراحات؟


أبقيها بسيطة قدر الإمكان (بالنسبة لي على الأقل)

التعدادات
الإعلانات
الصانعين
تجاوزات
أساليب
الخصائص
معالج الأحداث


أعلم أن هذا أمر قديم ولكن طلبي هو كما يلي:

من أجل الجمهور ، محمية ، خاصة ، داخلية ، مجردة

  • الثوابت
  • المتغيرات الثابتة
  • مجالات
  • أحداث
  • المنشئ (ق)
  • أساليب
  • الخصائص
  • المندوبين

وأود أيضا أن تكتب خصائص مثل هذا (بدلا من نهج الاختزال)

// Some where in the fields section
private int someVariable;

// I also refrain from
// declaring variables outside of the constructor

// and some where in the properties section I do
public int SomeVariable
{
    get { return someVariable; }
    set { someVariable = value; }
}

أفضلي هو الترتيب حسب النوع ومن ثم خفض الرؤية على النحو التالي

public methods
public events
public properties

protected methods
protected events
protected properties

private methods
private events
private properties
private fields

public delegates
public interfaces
public classes
public structs

protected delegates
protected interfaces
protected classes
protected structs

private delegates
private interfaces
private classes
private structs

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

ملاحظة: لا أستخدم حقولًا عامة أو محمية.


أوصي باستخدام معايير الترميز من IDesign أو تلك المدرجة في موقع Brad Abram . هؤلاء هم أفضل اثنين وجدتهما.

براد سيقول ...

يجب أن يكون أعضاء الفئة أبجديًا ، ويتم تجميعهم في أقسام (الحقول ، والبناء ، والخصائص ، والأحداث ، والطرق ، وتطبيقات الواجهة الخاصة ، والأنواع المتداخلة)


الأقرب إليك الذي من المحتمل أن تجده هو "إرشادات التصميم ، والرمز المدار ، و .NET Framework" ( http://blogs.msdn.com/brada/articles/361363.aspx ) بقلم براد أبرامز

يتم توضيح العديد من المعايير هنا. القسم ذو الصلة هو 2.8 أعتقد.


بدلاً من التجميع حسب الرؤية أو حسب نوع العنصر (الحقل ، الخاصية ، الطريقة ، إلخ) ، ماذا عن التجميع حسب الوظيفة؟


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

public class myClass
{
#region Private Members

#endregion
#region Public Properties

#endregion

#region Constructors

#endregion
#region Public Methods

#endregion
}

من المنطقي بالنسبة لي على أي حال


لا أعرف عن معيار اللغة أو الصناعة ، لكنني أميل إلى وضع الأشياء بهذا الترتيب مع كل قسم مغلف في #region:

باستخدام البيانات

مساحة الاسم

صف دراسي

أعضاء خاصين

ممتلكات عامة

الصانعين

الطرق العامة

طرق خاصة


من StyleCop

الحقول الخاصة والمجالات العامة والمصنعين والممتلكات والطرق العامة والأساليب الخاصة

نظرًا لأن StyleCop جزء من عملية إنشاء MS ، يمكنك عرض ذلك كمعيار فعلي


هذا سؤال قديم ولكنه لا يزال مناسبًا جدًا ، لذلك سأضيف هذا: ما هو أول شيء تبحث عنه عند فتح ملف صف دراسي قد تقرأه أو لا تقرأه من قبل؟ مجالات؟ الخصائص؟ لقد أدركت من التجربة أني دائماً أذهب للبحث عن الصانعين ، لأن أهم شيء يجب فهمه هو كيفية بناء هذا الكائن.

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

توفر ميزة المُنشِئ الأساسي القادم في C # 6 دليلاً على أن المكان الطبيعي لمُنشئ موجود في قمة الطبقة - في الواقع يتم تحديد التركيبات الأولية حتى قبل الدعامة المفتوحة.

من المضحك أن يكون هناك فرق كبير في إعادة ترتيب مثل هذا الأمر. إنه يذكرني بكيفية using العبارات المستخدمة - مع مساحات أسماء الأنظمة أولاً. استخدم الأمر "تنظيم استخدامات" في Visual Studio هذا الطلب. يتم الآن using s using الترتيب الأبجدي فقط ، مع عدم إعطاء معاملة خاصة لمساحات أسماء الأنظمة. والنتيجة تبدو أكثر بساطة ونظافة.





coding-style