&; 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
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.