ما هي أفضل طريقة لتخطيط فئة C#؟




coding-style (7)

هذا السؤال لديه بالفعل إجابة هنا:

هل هناك طريقة قياسية لوضع ملف C #؟ كما هو الحال في الحقول ، ثم الخصائص ، ثم البنائين ، إلخ؟

إليك ما أقوم به عادة ، لكنني أتساءل عما إذا كانت هناك طريقة قياسية؟

  1. الطبقات المتداخلة أو التعدادات
  2. مجالات
  3. الخصائص
  4. أحداث
  5. الصانعين
  6. الطرق العامة
  7. طرق خاصة

هل يقوم الناس بتجميع حقولهم معًا ، أم يقومون بتجميعها مع الخصائص؟ أو هل الناس لا تقلق بشأن أمر؟ يبدو أن Visual Studio يجعل الأمر صعبًا للغاية.

تحرير : تم نقل جزء آخر حول ReSharper هنا: اجعل Resharper يحترم تفضيلاتك لترتيب الشفرة.


أستخدم التصميم التالي:

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

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


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

للإجابة على سؤال إعادة التشكيل ، حدد ضمن Type Layout Layout في Options (تحت العقدة C # ). الأمر ليس بسيطًا ، لكن من الممكن تغيير ترتيب التخطيط.


أميل إلى تجميع البيانات الخاصة وأميل إلى تجميع الأساليب / الخصائص ذات الصلة في المجموعات الوظيفية.

public class Whatever {
   // private data here
   int _someVal = kSomeConstant;

   // constructor(s)
   public Whatever() { }

#region FabulousTrick  // sometimes regionize it
   // fabulous trick code
   private int SupportMethodOne() { }
   private double SupportMethodTwo() { }
   public void PerformFabulousTrick(Dog spot) {
       int herrings = SupportMethodOne();
       double pieces = SupportMethodTwo();
       // etc
   }
#endregion FabulousTrick
   // etc
}

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


كل منها خاص به ، لكنني أميل إلى اتباع نفس الترتيب الذي تتبعه تعليمات MSDN.

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

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


كما قلت ، لا أعتقد أن هناك أفضل طريقة على هذا النحو. لكن بعض المنظمات لا تساعدك على المبرمج.

كم مرة قضيت وقتًا طويلاً في مشروع ما صعودًا ونزولًا في ملف مصدر واحد أو أكثر في محاولة للعثور على واحدة من وظائفك.

لذلك #region من هذا #region الكثير في هذا النوع من الطرق -

  1. أحداث المنطقة : تشير جميع الأحداث إلى أن هذه الفئة تستخدمها (على الأقل في هذه الفئة الجزئية المعينة).

  2. ضوابط المنطقة : جميع الوظائف التي تتفاعل مباشرة مع عناصر التحكم في نموذج.

  3. MDI المنطقة : إعداد mdi لأعلى

    ثم سيكون هناك بعض للقيام بالوظائف بدلاً من الواجهة ،

  4. يبحث ريجكس المنطقة

أنا من النوع الذي أقوم به عندما أذهب ، لكن باستخدام نفس النمط الذي أستخدمه دائمًا. يجب أن أقول لقد أخبرني بعض المبرمجين بالتقاط عملي أنه من السهل متابعته وغيره من الفوضى.

يمكنك إرضاء نصف الأشخاص بنصف الوقت والنصف الآخر من ربع الوقت والربع الآخر من الوقت الذي تخلط بين الجميع بمن فيهم أنت. أعتقد أن وينستون كراشيل قال ذلك.


يمكنك محاولة Regionerate للمساعدة في هذا. أنا حقا أحب ذلك وانها اختيار سكوت هانسيلمان.





coding-style