1

int foo = bar > baz ? bar : baz;條件(三元)運算符代碼樣式

int foo = someBoolean ? bar : baz;


int foo = (bar > baz) ? bar : baz;

int foo = (someBoolean) ? bar : baz;


int foo = (bar > baz) ? bar : baz;

int foo = someBoolean ? bar : baz;

我不能決定這三個我應該使用。我可以:

  1. 使用沒有括號和風險壞可讀性的例子如:

    min[0] = min[0] > pos.x ? pos.x : 0;

  2. 始終使用括號,但風險 有點醜陋的代碼在短期表達式:

    setValue(val + scrollBar.getBlockIncrement() * ((scrollsUp) ? -1 : 1));

  3. 停留在中間的某處並使用括號當有狀況空間 ,但如果條件只是一個布爾 變量:

    min[0] = (min[0] > pos.x) ? pos.x : 0;

    setValue(val + scrollBar.getBlockIncrement() * (scrollsUp ? -1 : 1));

回答

4

神諭Code Conventions狀態下

return (condition ? x : y); 

..和進一步

if (a == b && c == d)  // AVOID! 
if ((a == b) && (c == d)) // RIGHT 

...它可以自由翻譯成

return (someBoolean ? x : y); 
return ((x > y) ? x : y); 

..雖然在個人筆記上,我不介意放鬆括號或兩個。最後它仍然是一個主觀的問題。如果您覺得添加/刪除括號會提供更好的可讀性,那麼請盡一切可能地做到這一點。

0

我個人寧願案例2:

 int foo = (bar > baz) ? bar : baz; 

    int foo = (someBoolean) ? bar : baz; 

作爲條件在括號內。

這段代碼

int foo = bar > baz ? bar : baz; 

將影響可讀性,但會完全編譯。 buti認爲將測試條件放在括號內對於可讀性會更好。然而,我會說它主要取決於人的編碼風格。 nonethless所有threecase會工作得很好:)

1

清晰的規則在什麼在我的情況,所以我一起去:

int foo = (bar > baz) ? bar : baz; 
int foo = (someBoolean) ? bar : baz; 
+2

感謝您提供幫助並回答問題。你已經回答的問題已經被封閉,因爲這是導致漫長辯論的事情,而不是解決某人遇到的問題。我想建議,在將來值得避免這些與意見有關的問題,或者有爭議的問題,因爲它們很可能會被關閉和刪除(所以您贏得的任何聲望也會消失)。 – AndrewC