使用某些东西是不好的做法吗?.isEmpty == true
Is it a bad practice to use something?.isEmpty == true
我每天多次检查数组(字符串)是否为空,现在我到处都使用 isEmpty == true
或 isEmpty == false
。无论数组是否可选,这对我来说都是一个很好的技术,如果数组不是可选的,它有助于更快地阅读代码。但是,我很容易出错,这可能是糟糕的代码。
所以我只想知道成熟的开发人员如何检查数组?我已经尝试过使用 (string ?? "").isEmpty
、string?.isEmpty ?? true
等等。有一些像 isNilOrEmpty
这样的扩展名,但看起来有点丑 :c
我不是成熟的开发人员,但是,如果我有可选的集合,我会先打开它,例如使用可选绑定
if let array = optionalArray { ... }
然后如果我知道集合存在,我将通过检查 isEmpty
是否为 false
来检查集合是否包含某些元素
if !array.isEmpty { ... }
只需一个 if
语句即可简化
if let array = optionalArray, !array.isEmpty { ... }
如果你有字符集
let optionalString: String? = "Hey"
if let string = optionalString, !string.isEmpty {
print("String contains \(string.count) characters")
// String contains 3 characters
}
guard let array = optionalArray , !array.isEmpty else {return}
Whether array is optional or not,
这可能是您出错的地方。为什么数组是可选的,尤其是 为什么数组是可选的,如果 empty 和 nil 意思相同?如果您发现自己在问这个问题,那么您的类型设计不正确。该数组应该只是一个数组,并且您应该在此过程的更早阶段使用 ... ?? []
以确保在必要时为真。一个类型应该避免有多个表示同一事物的值。
只有当 empty 和 nil 之间存在语义差异时,您才应该有一个可选的集合(包括字符串),在这种情况下,您需要测试该差异。
所以不,你不应该使用 == true
或 == false
。在大多数情况下,这很糟糕 Swift,因为它迫使 reader 进行心理体操以理解它在 nil
情况下的含义,但也因为它显示了您的潜在设计问题。
empty 和 nil 有时有不同的含义。我最喜欢的例子之一是多层配置方案,其中 "nil" 表示 "no setting","empty" 表示在这一层明确设置为空。在那些情况下,可选集合是绝对合适的。在这些情况下使用 == true
类型语法可能是可以接受的(尽管我通常会使用 ?? []
代替;那只是风格)。但根据我的经验,这些情况非常罕见。
我每天多次检查数组(字符串)是否为空,现在我到处都使用 isEmpty == true
或 isEmpty == false
。无论数组是否可选,这对我来说都是一个很好的技术,如果数组不是可选的,它有助于更快地阅读代码。但是,我很容易出错,这可能是糟糕的代码。
所以我只想知道成熟的开发人员如何检查数组?我已经尝试过使用 (string ?? "").isEmpty
、string?.isEmpty ?? true
等等。有一些像 isNilOrEmpty
这样的扩展名,但看起来有点丑 :c
我不是成熟的开发人员,但是,如果我有可选的集合,我会先打开它,例如使用可选绑定
if let array = optionalArray { ... }
然后如果我知道集合存在,我将通过检查 isEmpty
是否为 false
if !array.isEmpty { ... }
只需一个 if
语句即可简化
if let array = optionalArray, !array.isEmpty { ... }
如果你有字符集
let optionalString: String? = "Hey"
if let string = optionalString, !string.isEmpty {
print("String contains \(string.count) characters")
// String contains 3 characters
}
guard let array = optionalArray , !array.isEmpty else {return}
Whether array is optional or not,
这可能是您出错的地方。为什么数组是可选的,尤其是 为什么数组是可选的,如果 empty 和 nil 意思相同?如果您发现自己在问这个问题,那么您的类型设计不正确。该数组应该只是一个数组,并且您应该在此过程的更早阶段使用 ... ?? []
以确保在必要时为真。一个类型应该避免有多个表示同一事物的值。
只有当 empty 和 nil 之间存在语义差异时,您才应该有一个可选的集合(包括字符串),在这种情况下,您需要测试该差异。
所以不,你不应该使用 == true
或 == false
。在大多数情况下,这很糟糕 Swift,因为它迫使 reader 进行心理体操以理解它在 nil
情况下的含义,但也因为它显示了您的潜在设计问题。
empty 和 nil 有时有不同的含义。我最喜欢的例子之一是多层配置方案,其中 "nil" 表示 "no setting","empty" 表示在这一层明确设置为空。在那些情况下,可选集合是绝对合适的。在这些情况下使用 == true
类型语法可能是可以接受的(尽管我通常会使用 ?? []
代替;那只是风格)。但根据我的经验,这些情况非常罕见。