SORU
26 HAZİRAN 2014, PERŞEMBE


&; Zincirleri " eğer önlemek için nasıl "?

Pseudo-kod bu ben varsayarsak:

bool conditionA = executeStepA();
if (conditionA){
    bool conditionB = executeStepB();
    if (conditionB){
        bool conditionC = executeStepC();
        if (conditionC){
            ...
        }
    }
}

executeThisFunctionInAnyCase();

Fonksiyonları executeStepX önceki başarılı sadece ve sadece idam olmalıdır. Her durumda, executeThisFunctionInAnyCase işlevi sonunda çağrılmalıdır. Ben bir acemi olarak programlama, çok üzgünüm, çok temel bir soru: bir yolu var (C/C için örnek) önlemek için uzun if zincir üreten bu tür "piramit kodu", karşılığında kod okunabilirliği?

Eğer executeThisFunctionInAnyCase işlev çağrısı atlayabiliriz, kod olarak basitleştirilmiş olabilir biliyorum:

bool conditionA = executeStepA();
if (!conditionA) return;
bool conditionB = executeStepB();
if (!conditionB) return;
bool conditionC = executeStepC();
if (!conditionC) return;

Ama kısıtlama executeThisFunctionInAnyCase işlev çağrısı. break deyimini bir şekilde kullanılabilir mi?

CEVAP
26 HAZİRAN 2014, PERŞEMBE


Sadece iş için ikinci sürümü için ek bir fonksiyon:

void foo()
{
  bool conditionA = executeStepA();
  if (!conditionA) return;

  bool conditionB = executeStepB();
  if (!conditionB) return;

  bool conditionC = executeStepC();
  if (!conditionC) return;
}

void bar()
{
  foo();
  executeThisFunctionInAnyCase();
}

İç içe ya eğerler (ilk varyant) kullanarak veya patlak arzusu "fonksiyonu bir parçası" genellikle ekstra özellik ihtiyacınız var demektir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • andyabc45

    andyabc45

    1 Mayıs 2011
  • Matt Stokes

    Matt Stokes

    22 Ocak 2008
  • RobertDuskin

    RobertDuskin

    12 HAZİRAN 2008

İLGİLİ SORU / CEVAPLAR