簡單明了。根據上下文給動詞和介詞加上名詞。請使用removeObject(object, atIndex: index)
,而不是remove(object, at: index)
。不要為了過度的簡潔而影響清晰准確性。
避免縮寫。使用printError(myError)
而不是printErr(myErr)
以及setBackgroundImage(myImage)
而不是setBGImage(myImg)
。雖然蘋果提供了一系列“可接受”的縮寫,但是請不要在 Swift 中使用像 max 和 min 這樣的縮寫。
避免歧義。考慮一下函數或者方法的命名是否存在多種解釋。舉個栗子,在displayName
中,display 是名詞還是動詞呢?如果命名不清晰的話,請重新命名來消除混淆。
保持一致性。在你的應用和庫中使用相同的術語來描述概念。避免在一個方法里使用fetchBezierElements()
,卻在另外一個里使用listPathComponents()
。
不要引用類型關鍵字。避免命名中出現 struct、enum、class、instance 以及 object。請使用buildDeckofCards()
而不是buildDeckofCardsStruct()
。
方法命名使用小寫。雖然大多數開發者使用小寫命名全局函數,但你可以大寫,這並不是什么罪過。雖然這種函數命名 過時了,但大寫的函數名卻能立刻將函數與方法區別開來。有一段時間我也改變過想法,但是最終還是決定奮起抗爭,使用小寫。這種做法曾經和命名空間一樣普 及,但是突然間就銷聲匿跡了。就像一百萬個喊着大寫的人突然沉默。
省略”get”。獲取狀態信息的函數應該描述他們要返回的東西。請使用extendedExecutionIsEnabled()
或isExtendedExecutionEnabled()
而不是getExtendedExecutionIsEnabled()
。通過參數返回數據的函數例外。
使用標簽描述參數。建議結合函數名和標簽來描述函數本身,這樣創建出來的會是包括介詞(with、of、 between 等等)的描述符。你會”construct color with red, green, and blue”(譯者注:使用紅綠藍構建顏色),測試”length of string”(譯者注:字符串的長度),或者”test equality between x and y”(譯者注:判斷 x 和 y 是否相等)。
好的函數名和標簽可以告訴人們如何使用函數。結果會是自文檔化,不用依靠記憶或查找來確定需要傳入的參數。請使用withTag:
而不是tag:
。
使用介詞,避免”and”。And
是 Apple 特別聲稱要避免的一個詞。避免使用”view and position”,使用”view, position”。
如果你必須使用and
,請確保一組參數有語義聯系,如使用”red, green and blue”構建顏色。哪怕之后調整了關鍵字,也顯然不可能中斷這些項的聯系。在這種情況下,即使是代碼潔癖患者也不會認為你的代碼有問題。
Apple 支持使用 and 的一個例子是在一個方法中描述兩種截然不同的動作,比如openFile(withApplication:, andDeactivate:)
。
在基於類型的名字后面加上value
。請使用toIntValue
而不是toInt
,以及withCGRectValue
而不是withCGRect
。
使用美國標准短語。由於這些詞是由 Apple 提供的,請使用 initialize 而不是 initialise 以及 color 而不是 colour。
有疑惑,找 Apple。使用相似的概念搜索 Apple API 接口並模仿其方法簽名。盡量參考 Objective-C 命名,因為 Swift 中的 Apple API 並沒有全部通過人工審查。自動轉換過來的 API 可能並不是一個好例子。
翻譯文鏈接:http://swift.gg/2015/11/12/naming-methods-and-functions/
英文原文鏈接:http://ericasadun.com/2015/08/31/naming-methods-and-functions/