【发布时间】:2015-10-13 10:26:06
【问题描述】:
从 API 设计的角度来看,在我看来,在方法签名中使用隐式解包可选 (IUO) 只会有利于方法代码(不必解包)而不是调用者。
以open source code 为例:
class func getStationDataWithSuccess(success: ((metaData: NSData!) -> Void)) {
if useLocalStations {
getDataFromFileWithSuccess() { data in
success(metaData: data)
}
} else {
loadDataFromURL(NSURL(string: stationDataURL)!) { data, error in
if let urlData = data {
success(metaData: urlData)
}
}
}
}
当 metaData 可以是可选的时,我认为没有任何价值被声明为 IUO,或者是否有理由将这个方法参数声明为这样?
因此,从 API 设计的角度来看,在我看来 Optional 应该总是比 IUO 更好的做法(基于具体原因,而不是意见)
【问题讨论】:
-
不完全重复(您在询问方法中的参数),但相关:stackoverflow.com/questions/24006975/…
-
谢谢@SteveWilford。如果您查看答案,您会发现在普通 API 中没有提及原因,如示例代码所示 IUO 优于 Optional。