清除用法

避免歧义

类,结构,函数和变量的名称应该避免歧义。

例:

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)