很显然,nil
更干净。因为-1
毫无意义。这只是一个魔术字。这种情况很难得到支持,重构和处理。
,
第二是更好的选择
if let v = getSleepAmmount() {}
但是先有了
let v = getSleepAmmount()
if v > 0 {}
返回nil表示这不是有效的返回值,而-1可能意味着另一件事将被检查代码的新开发人员所误解
,
返回nil
是一个更好的解决方案,而不是使用任何垃圾或默认值。
返回任何默认值将来可能会与实际结果发生冲突。
此外,可能还有其他开发人员在处理相同的代码。因此,使用nil
比使用-1
有更好的解释。
,
如果调用方中只有在存在有效睡眠量的情况下才应运行的代码,则可选方法是更好,更清晰的方法。这正是guard let
和if let
设计的目的:
guard let sleepAmount = getSleepAmount() { else return }
// do something with sleepAmount
更好的方法是在函数内部抛出错误:
func getSleepAmmount() throws -> Int {
// calculate sleep time
// return when valid
// else
throw InvalidSleepAmount
}
然后
do {
let sleepAmount = try getSleepAmount()
// do something with it
} catch InvalidSleepAmount {
// error processing
}
(如果需要,您的函数可能会引发不同的错误,因此调用方会知道为什么睡眠量无效,SleepTooShort
,SleepTooLong
,{{1} }等)
本文链接:https://www.f2er.com/3103646.html