2016-03-23 19 views
4

Aşağıdaki kod var:Bu iki if ifadesini birleştirebilir miyim?

if (a || b) 
{ 
    X(); 
} 

if (a) 
{ 
    Y(); 
} 

ben bir şekilde bu iki if ifadesi birleştirebilir miyim?

+3

değer yoktur akılda ayı yapın: Yani en iyi çözüm bir anlamı bağlıdır, b, X ve Y. Ve Aşağıdakilerden tüm farklı semantik anlamları olan doğru olacaktır koddan okunabilir halde okunabilir. –

+1

Sadece bunu okunabilir hale getirdiğimi düşündüm. – Drutten

+2

Neler var hızlıca ayrıştırılabilir ve kolayca ayrıştırılabilir. Teknik düzeyde, insanların hangi kodla geldiğini görmek isterdim, ancak büyük olasılıkla bununla uğraşabilirim veya çekimi adlandırılmış bir yönteme veya başka bir şeye taşıyabilirim. –

cevap

12

a ve b yanlış çünkü ilk döngü çıkışlar, daha sonra gerçekten, belki üzerine değerini geçebileceği değil ikinci döngü-

if(a||b) 
{ 
    X(); 
    if(a) 
    { 
     Y(); 
    } 
} 
0

kontrol etmek gerek yoktur çünkü eğer bu, daha iyi olurdu X yöntemi ve eğer A ise, sadece Y ifadesini vererek size bir çağrı verecektir.

if(a || Y() || b) X(); 

Ama bu kod başka bir kişi tarafından okunacak o hesaptaki almak gerekir: Bu dürüstçe yazabilir senin Y() yöntemi her zaman doğru dönerse o

3

işlemek için çok daha net bir şekilde Bu yüzden kolay okunabilir olmalı ve diğer kişi için anlamını açıklamalıdır.

if(a || b) 
{ 
    X(); 
    if(a) Y(); 
} 

veya

if(a) 
{ 
    X(); 
    Y(); 
} 
else if(b) 
{ 
    Y(); 
} 
+0

'Y()', boolean'a dönüştürülebilen bir şey döndürürse, o zaman uzaklaştırmadığı sürece '(Y() || true) işlevini kullanabilirsiniz. Bunun gibi bazı okunabilirliklerini kaybedersiniz, bu gerçekten iyi bir fikir değildir. – Matt

İlgili konular