سؤال

لدي عامة سؤال حول نطاق و التغليف.تأخذ اثنين من السيناريوهات:

السيناريو 1:

// a global application level constant
public static const IS_DEMO_MODE:Boolean = false;   

... // somewhere deep in the codebase

private function _myFunction():void
{
    if (IS_DEMO_MODE == true) {
      // If Demo Mode do not allow this function to complete
      return;       
    }
    else {
       // Function behaves normally
       // Code ...
    }

}

السيناريو 2:

// a global application level constant
public static const IS_DEMO_MODE:Boolean = false;   

... // somewhere deep in the codebase

 // call the function and pass in the constant
_myFunction(IS_DEMO_MODE);


private function _myFunction(isDemoMode:Boolean):void
{
    if (isDemoMode == true) {
      // If Demo Mode do not allow this function to complete
      return;       
    }
    else {
       // Function behaves normally
       // Code ...
    }

}

تحدث وظيفيا هذين مقتطفات الشفرة تفعل الشيء نفسه بالضبط نفس الشيء.أنا أحاول أن أفهم النقاط الدقيقة من أسلوب الترميز ولماذا طريقة واحدة قد يكون من المفضل أكثر من الآخر ؟ يبدو أن السيناريو 2 هو أفضل من تغليف للعرض.ولكن السيناريو 1 هو أكثر مضمونة في هذا منطقية في المشروط يأتي من مكان واحد فقط, العالمي المستمر.كنت لا داعي للقلق حول استدعاء دالة ذلك بشكل صحيح في حين تلقي المعلمة يمكن أن تمر في قيمة خاطئة.ولكن السيناريو 2 يبدو مجديا لأن إزالة تبعية ثابتة و يمكن أن يكون وظيفة التصرف بشكل حيوي.أية أفكار حول هذا ؟ هل هناك أي المفاضلة أنا أكثر من تبحث ؟

نفس مفهوم السؤال تطبيقها على كائنات الطبقات أيضا.ولكن أنا فقط موجودة على سبيل المثال في شروط وظيفة بساطة المثال التعليمات البرمجية.

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

المحلول

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

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

نصائح أخرى

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

وبعض الأشياء عالمية حقا. الثوابت العالمية ليست خطيرة على الإطلاق.

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