2017-03-17 31 views
2

有沒有更好的方法來解決這個問題? 我有兩個變量X & Y. X & Y都不能爲空。他們都不能設置。其中只有1應爲空優雅的方式來處理null - 只有2個變量所需的單個空值

對於前:

if (x && y) 
    return err; 
if (x == null && y == null) 
    return err; 
if (x) 
…do something with x 
if (y) 
..do something with y 
+0

聽起來像是一種代碼異味。你很可能有更深的設計問題。如果你的代碼示例不夠廣泛(使用具體的信息,比如那些變量的用途),它肯定會有所幫助 –

回答

6

您可以合併的錯誤檢查就像這樣:

if ((x == null) == (y == null)) { 
    return err; 
} 
if (x != null) { 
    // do something with x 
} else { 
    // do something with y 
} 
+2

對於另一種方式,即'((x == null)!=(y == null))' ,你也可以使用[布爾邏輯異或運算符](https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.22.2),即' ((x == null)^(y == null))',由於運算符優先規則,它不需要額外的括號,即'(x == null^y == null)'。 – Andreas

0

這個問題更適合codereview,但它通常最好避免聰明的代碼。如果您特別想要合併這兩種錯誤情況,請只寫

if (x != null && y == null) { 
    // do something with x 
} else if (y != null && x == null) { 
    // do something with y 
} else { 
    return err; 
} 
相關問題