سؤال

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

على أي حال, أريد أن يكون الجميع باستخدام نفس الاتفاقية في جميع الطبقات (مع محددة مسبقا من أجل جميع المناطق) مثل:

  • خاص الميادين
  • المنشئات
  • خصائص الطبقة
  • معالجات الأحداث
  • الخ...

هل لديك أي اقتراح كيف هذا التقسيم يمكن أن تبدو مثل (ماذا المناطق الشعور وما الأسماء ينبغي أن يكون) والتي أمر ينبغي تعريفها ؟

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

المحلول

اتفاقي ليس لاستخدامها.

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

نصائح أخرى

قال أحدهم ذات مرة إن وجود مؤتمر مثل الموجود أعلاه:

  • الحقول الخاصة
  • المنشئون
  • خصائص الطبقة
  • معالجات الأحداث
  • إلخ...

يشبه وضع جدول حيث تكون جميع اللوحات معًا ، جميع الملاعق معًا ، وجميع السكاكين معًا وجميع الشوكات معًا.

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

كلما رأيت مناطق ، أعتقد أن الكود إما تم إنشاؤه أو في حاجة إلى إعادة الانتهاء.

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

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

  • المطورين قد يغيب عن بعض المهم جزء من التعليمات البرمجية المصدر
  • متوسط كمية LOC في نفس الملف يميل إلى زيادة

إذا كنت ترغب في فرض أسلوب الترميز الاتفاقية في فريقك, إلقاء نظرة على مايكروسوفت StyleCop.لاحظ أن أداة حاليا يعمل فقط على C#.

#region Lotsa boring code and lookup tables

أستخدمه لحفظ العقارات على الشاشة ، لا شيء آخر :)

أستخدم المناطق التالية:

Private Member Variables
Constructor
Public Properties
Private Methods
Public Methods
Events

والسبب بسبب تنظيم الكود الأفضل.
أعمل مع الملفات التي قد تحتوي على أكثر من 2000 سطر من الكود ومن الصعب للغاية الحفاظ على الكود بدون مناطق.

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

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

لذلك لا تكرر أبدًا في التعليقات أو توجيهات المنطقة التي تم ذكرها بالفعل في الكود.

إضافة معلومات إضافية فقط.

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

قد تكون مهتمًا بهذا هل تقول لا لمناطق C#.

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

لا يوجد شيء أسوأ من العثور على منطقة مُنشأة مغلقة تخفي سطرًا واحدًا فقط من التعليمات البرمجية.

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

لقد كتبت مقتطفات رمز المنطقة الخاصة بي لعام 2008 والتي أستخدمها دائمًا:

<?xml version="1.0" encoding="utf-8" ?>
<CodeSnippets  xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
<CodeSnippet Format="1.0.0">
    <Header>
        <Title>#class region</Title>
        <Shortcut>#classregion</Shortcut>
        <Description>Code snippet for #region in classes</Description>
        <Author>Simon Linder</Author>
        <SnippetTypes>
            <SnippetType>Expansion</SnippetType>
            <SnippetType>SurroundsWith</SnippetType>
        </SnippetTypes>
    </Header>
    <Snippet>
        <Declarations>
            <Literal>
                <ID>name</ID>
                <ToolTip>Region name</ToolTip>
                <Default>MyRegion</Default>
            </Literal>
        </Declarations>
        <Code Language="csharp">
            <![CDATA[#region Variables
                    $selected$ $end$
                #endregion

            #region Construction/Destruction
                    $selected$ $end$
                #endregion

            #region Properties
                    $selected$ $end$
                #endregion

            #region Public Methods 
                    $selected$ $end$
                #endregion

            #region Private/Proteced Methods
                    $selected$ $end$
                #endregion]]>
        </Code>
    </Snippet>
</CodeSnippet>

كما ترون أنا أستخدم المناطق Variables, Construction/Destruction, Properties, Public و Private أساليب. غالبًا ما أضيف منطقة فرعية أخرى إلى المنطقة الخاصة التي تسمى events. ترتيب المناطق يعمل بشكل جيد مع Stylecop.

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