如果我可以用三元替换if...then...else
,我应该这样做吗?还是归结为两者中哪一个最容易阅读和清晰?
例如更改:
If condition {
doSomething
} else {
doSomethingElse
}
自
condition ? doSomething : doSomethingElse
变量赋值怎么样:
If condition {
myProperty += 1
} else {
myProperty -= 1
}
自:
myProperty = condition ? myProperty + 1 : myProperty - 1
编辑:不是寻找人们喜欢的意见,而是是否有公认的专业实践来取代......然后。。。否则,如果可能的话,使用三元。
由于两者都有效且性能没有差异,因此目标是可读性。
使用三元条件进行简单的内联决策。
对于任何不适合内联或比基本算术更复杂的内容,使用普通条件语句可能更具可读性
Apple 在 Swift 2.2 文档中有一个很好的例子。
来自 Swift 2.2 Apple 文档的示例:
let contentHeight = 40
let hasHeader = true
let rowHeight = contentHeight + (hasHeader ? 50 : 20)
// rowHeight is equal to 90
我想说的是,上面的内容和下面的一样可读,而且更干净。
let contentHeight = 40
let hasHeader = true
let rowHeight: Int
if hasHeader {
rowHeight = contentHeight + 50
} else {
rowHeight = contentHeight + 20
}
// rowHeight is equal to 90
No.三元运算符只应用于选择两个表达式之一的值。如果你的论点是"名词",那就认为它是合适的。例如:
let wheels = isTricycle ? 3 : 2
在执行操作或具有更复杂的参数的情况下,请使用传统的if
语句。
苹果在iBook"The Swift Programming Language"中也说了很多,只提供了三元运算符的这些类型的例子,并特别指出:
摘"三元条件运算符为决定考虑两个表达式中的哪一个提供了一个有效的速记。但是,请谨慎使用三元条件运算符。如果过度使用,它的简洁性会导致代码难以阅读。
自:Apple Inc. "The Swift Programming Language (Swift 2 Prerelease)"。 iBooks。