【发布时间】:2017-05-16 14:21:40
【问题描述】:
当我们创建一个返回布尔值的函数时,我们是否应该在每个 if/else 语句上都返回?
例如,如果你想在 swift 中检查一个文件是否存在,你会这样做
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 语句上添加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 这不是特定于语言的。我也想知道其他语言,因为我也在使用 java。给出的示例只是因为我当时正在从事该项目。
-
在这种特定情况下,
if (X) { return true } else { return false }可以只替换为return X。 -
这是基于意见的。我的观点是我会严重嘲笑第二种风格的代码。使用
if然后返回true或false让我的脊椎颤抖,胆汁涌上我的食道。
标签: if-statement language-agnostic return