سؤال

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

وبلدي النصائح هي على النحو التالي: 1.Use بيان التبديل عندما يكون مناسبا. خروج 2.use () بيان عندما يكون ذلك ممكنا. 3. استخدام البيان الثلاثي عندما يكون ذلك ممكنا؛

هل هناك نصائح أخرى التي يمكن أن تقلل إذا كانت تصريحات شيء آخر، خصوصا تداخل البيانات إذا-آخر؟

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

المحلول

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

نصائح أخرى

وحاول استخدام "العودة المبكرة" عندما يكون ذلك ممكنا من أجل خفض عمق التعشيش. محاولة استخدام تقييم التعبير المنطقية.

مثال:

function foo($param)
{
    $ret = false;

    if(userIsLoggedIn()) {
        if(is_array($param)) {
            if($param['count'] > 0) {
                $ret = true;
            }
            else {
                $ret = false;
            }
        }        
    }

    return $ret;
}

هل يمكن إعادة كتابة هذا مثل:

function foo($param) 
{
    if(!userIsLoggedIn()) return false;
    if(!is_array($param)) return false;
    return $param['count'] > 0;
}

وهناك طريقة الأكاديمي الرسمي لريفاكتور وتبسيط الكثير من الظروف if، ودعا <م> رسم الخرائط كارنوه .

ويستغرق في ظروف الاختبار متعددة ومحاولات للمساعدة في خلق البيانات if مبسطة التي تغطي جميع الحالات المطلوبة.

ويمكنك معرفة المزيد حول هذا الموضوع من ويكي هنا .

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

وتعدد الأشكال قد تخلص من عدد قليل أيضا، اللثوغ الصعب تنفيذ للحد من إذا / آخر في PHP كما هو لم تكتب آمن ...

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

واستبدال جميع البيانات آخر مع تبطل إذا كانت تصريحات يجعل التعليمات البرمجية أسهل بكثير لقراءة أعلى إلى أسفل (على مقربة من CONDTION وكتلة التعليمات البرمجية):

# business logic block
if ( $condition ) {
    # do something
    # code code code
} else {
    # code code code
    return;
}

# refactored:
if ( ! $contition ) {
    # code code code
    return;
}
if ( $condition ) {
    # code code code 
}

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

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

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