2011-06-05 18 views
5

Eğer durum veya tek bir dönüş ifadesi varsa bunu bire dönüştürmenin bir yolu var mı?Birden fazla koşul olduğunda ve zamanlanırsa ifadeler atılıyor

 public bool SomethingEnabled 
    { 
      if (!condition1) 
      { 
       return false; 
      } 

      return condition2 
       && (condition3 || !condition4); 
     } 
+3

Bunu neden yapmak istiyorsun? Kesinlikle daha az kod satırı => daha hızlı yürütme süreleri, yanlış? –

+0

@Cody - Ardından, insanlara Noel Baba olmadığını söyleceksiniz. –

cevap

7

Bu eşdeğerdir:

public bool SomethingEnabled 
{ 
    return condition1 && condition2 && (condition3 || !condition4); 
} 

ama okunabilirlik ve bakımı yararına

, şiddetle de zeki kod yazarken karşı dikkat.

+0

'(condition2 && ..) ' –

+0

civarında ekstra paranteze ihtiyacınız olduğunu düşünmüyorum. Haklısınız. Düzenlenen. –

+0

Bence 'hakikat' cevabını vermek adil. En kısa uygulamaya sahip ilk kişi oldu. –

2
return condition1 && condition2 && (condition3 || !condition4); 
2
return condition1 && (condition2 && (condition3 || !condition4)); 

ilk şart koşul1 yanlışsa yanlış döndürmektir. Koşul1 koşullu ise koşul tamamen yanlış olarak değerlendirilecektir. Eğer doğruysa, geri kalanı ne yaparsa değerlendirir.

+0

@Matt Yavaş ve yazım hataları ile yazarım. Ne diyebilirim: P – Aleadam

1

iyi adlar ve küçük fonksiyonlar yardımcı olacaktır:

public bool SomethingEnabled 
{ 
    if (IsInvalid) return false; 

    return IsInReadyState && IsInOtherState; 
} 

public bool IsInvalid 
{ 
    return !condition1; 
} 

public bool IsInReadyState 
{ 
    return condition3 || !condition4; 
} 

public bool IsInOtherState 
{ 
    return condition2; 
} 
+0

Güzel duygu. IsValid, "InInvalid" den daha okunabilir kodlar için yapardı ('!' Ile birleştirildiklerinde dikkate alınız). Ayrıca 'SomethingEnabled' daha da basitleştirilebilir. – Johnsyweb

+0

@Johnysweb - Yea, bağlam eksikliği göstermek istediğimi göstermeyi zorlaştırdı. –

+1

Evet, evet, bin kere evet! Akıllılık üzerinden okunabilirlik. –