清除用法
避免歧义
类,结构,函数和变量的名称应该避免歧义。
例:
extension List {
public mutating func remove(at position: Index) -> Element {
// implementation
}
}
对此函数的函数调用将如下所示:
list.remove(at: 42)
这样,避免了歧义。如果函数调用只是 list.remove(42)
,那么将不清楚,如果将删除等于 42 的 Element 或者如果将删除索引 42 处的 Element。
避免冗余
函数名称不应包含冗余信息。
一个糟糕的例子是:
extension List {
public mutating func removeElement(element: Element) -> Element? {
// implementation
}
}
对函数的调用可能看起来像 list.removeElement(someObject)
。变量 someObject
已经指示删除了一个元素。函数签名最好如下所示:
extension List {
public mutating func remove(_ member: Element) -> Element? {
// implementation
}
}
对此函数的调用如下所示:list.remove(someObject)
。
根据角色命名变量
变量应按其角色(例如供应商,问候语)而不是其类型(例如工厂,字符串等)命名。
协议名称和变量名称之间的高度耦合
如果类型的名称在大多数情况下描述其角色(例如 Iterator),则类型应使用后缀 Type
命名。 (例如 IteratorType)
使用弱类型参数时提供其他详细信息
如果对象的类型没有明确指出它在函数调用中的用法,那么该函数应该用每个弱类型参数的前一个名词命名,描述它的用法。
例:
func addObserver(_ observer: NSObject, forKeyPath path: String)
调用看起来像`object.addObserver(self,forKeyPath:path)
代替
func add(_ observer: NSObject, for keyPath: String)
调用看起来像 object.add(self, for: path)