三元运算符 ? 应该只用在它能让代码更加清楚的地方。 一个条件语句的所有的变量应该是已经被求值了的。计算多个条件子句通常会让语句更加难以理解,就像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];
~~~