有沒有更好的方法來解決這個問題? 我有兩個變量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
有沒有更好的方法來解決這個問題? 我有兩個變量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
您可以合併的錯誤檢查就像這樣:
if ((x == null) == (y == null)) {
return err;
}
if (x != null) {
// do something with x
} else {
// do something with y
}
對於另一種方式,即'((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
這個問題更適合codereview,但它通常最好避免聰明的代碼。如果您特別想要合併這兩種錯誤情況,請只寫
if (x != null && y == null) {
// do something with x
} else if (y != null && x == null) {
// do something with y
} else {
return err;
}
聽起來像是一種代碼異味。你很可能有更深的設計問題。如果你的代碼示例不夠廣泛(使用具體的信息,比如那些變量的用途),它肯定會有所幫助 –