三元運算符 ? 應該只用在它能讓代碼更加清楚的地方。 一個條件語句的所有的變量應該是已經被求值了的。計算多個條件子句通常會讓語句更加難以理解,就像if語句的情況一樣,或者把它們重構到實例變量里面。
**推薦:**
~~~
result = a > b ? x : y;
~~~
**不推薦:**
~~~
result = a > b ? x = c > d ? c : d : y;
~~~
當三元運算符的第二個參數(if 分支)返回和條件語句中已經檢查的對象一樣的對象的時候,下面的表達方式更靈巧:
**推薦:**
~~~
result = object ? : [self createObject];
~~~
**不推薦:**
~~~
result = object ? object : [self createObject];
~~~