PHP if-else tabloların sayısını azaltmak için nasıl?

6 Cevap php

Özellikle else if ifadeleri iç içe birçok if-else ifadeleri vardır bulundu, bu ifadeler benim kod daha okunabilir hale getirmek. PHP eğer başka tabloların sayısını azaltmak için nasıl?

My tips are as follows: 1.Use a switch statement when it is suitable; 2.use exit() statement when it is feasible; 3. Use ternary statement when it is feasible;

Başka ifadeler, özellikle if-else ifadeleri if azaltabilir başka ipuçları var mı?

6 Cevap

Küçük iş birimlerinin kodunuzu refactor. Çok koşullu mantık bir kod-koku ve genellikle fonksiyon refactored gerektiğini gösterir.

Yuvalama derinliğini azaltmak amacıyla mümkün olduğunda "erken dönmek" kullanmaya çalışın. Boolean ifade değerlendirme kullanmaya çalışın.

Örnek:

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

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

    return $ret;
}

Böyle yazabiliriz:

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

Karnaugh mapping adı if koşulları bir çok Refactor ve kolaylaştırmak için resmi akademik yöntem yoktur.

Tüm gerekli davaları kapsayacak basitleştirilmiş if tablolar oluşturmaya yardımcı olmak için birden çok test koşullarında ve girişimleri alır.

Sen wiki bu konuda daha fazla bilgi edinebilirsiniz here.

Başka ifadeler, tüm gerekli yapan bir işlev veya bir sınıf yazmak, kodunuzu refactor, üçlü operatörünü kullanın.

polimorfizm güvenli tip değil gibi PHP if / else azaltmak için uygulanması zor allthough, aynı zamanda bir kaç kurtulmak olabilir ...

Ben kodu bir sürü üzerinde çalışmak hiç iş mantığı gelişen tam şu ve diğer her gün değiştirilmesi gerekir. Kesinlikle beni değişikliklerle yetişmek yardımcı oluyor iki ipuçları: her şeyin ifadeleri önlemek ve mümkün olduğunca çabuk / çıkış dönmek. Derin iç içe girmek Asla -> alt rutinleri / işlevleri oluşturabilir.

Eğer olumsuzlanmak tablolar ile her şeyden ifadeleri değiştirme altındaki (condtion ve kod bloğunun yakınlık) için üst okumak için kod çok daha kolay hale getirir:

# 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 
}

İkincisi, kısa sürede / çıkış dönmek. Benim tabii görüşü, ama bir kez sen zaten altprogramın sonucu tespit ettik zaman ben alt kod üst okumak istiyorum, özellikle, herhangi bir ekstra durum / testleri ile çalışan nokta görmüyorum. Tüm belirsizliği ortadan kaldırması basit şeyler yapar.

Sonuç olarak, özellikle BL uzun listeler başka kullanarak önlemek istiyorum. Kısa sürede sonuç bildiğiniz gibi dönün. Yuvalama seviyesi fazla 2 ise, alt rutinler / işlevleri oluşturabilir.