當我們創建一個返回布爾值的函數時,我們是否應該返回每個if/else語句?我們應該使用`else return`還是`return`?
例如,如果你想檢查一個文件中迅速存在,你會做
func fileExists() -> Bool
{
if let dir = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first
{
let path = dir.appendingPathComponent("\(self.name).\(self.type)")
if(FileManager.default.fileExists(atPath: path.path))
{
return true
}
}
return false
}
的問題是,我們應該在函數的末尾添加return false
如果條件得到滿足,如圖以上,還是應該在每個if
statment添加return false
(如下圖所示)
func fileExists() -> Bool
{
if let dir = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first
{
let path = dir.appendingPathComponent("\(self.name).\(self.type)")
if(FileManager.default.fileExists(atPath: path.path))
{
return true
} else {
return false
}
} else {
return false
}
}
對我來說,第一個例子看上去幹淨,但我不知道這是很好的做法。儘管它看起來更乾淨,但我想用最好/最安全的方式,所以這個問題並不是對看起來最好的看法。
此問題語言特定?如果是這樣,請添加合適的語言標籤。 – Quentin
@Quentin這不是語言特定的。我想知道其他語言,因爲我也使用java。給出的例子只是因爲我當時正在研究這個項目。 – iProgram
請看這裏http://refactoring.com/catalog/replaceNestedConditionalWithGuardClauses.html –