清除用法
避免歧義
類,結構,函式和變數的名稱應該避免歧義。
例:
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)