這是寫程式最基礎也最困難的問題...先撇除英文單字詞彙不足的問題,單單在命名的原則上就有很多值得注意之處。
-
Mysterious Name
-
Magic Number
-
避免誤導
。例如名字叫做「accountList」,卻不是 List 型態
(其實變數中也不宜出現型態名稱,這又是另外一個規範了...)
。避免使用 l、O、o 作為變數名稱…
或許有人會覺得怎麼會這麼天?怎麼可能用「l 」(L)當變數名稱?別忘了四層 for 迴圈就很自然的 i, j, k, l,...。另外,可以參考 Demo 大大的文章 -「程式設計師該用的字型」以區別 i、1、I、l、o、O、0、B、8。
-
有意義的區別
。a1、a2、 a3、...嗯,這個應該不用多作解釋。
zork、aZork、theZork、...亦同。
。避免使用不必要的贅字:variable、string、table、info、data
ex: customerInfo => customer
-
為了可以方便溝通討論,使用可以念得出來的名稱
例如 「genymdhms」就是念不出來的。(Generation date, year month, day, hour, minute, second)
-
避免編碼
。x 匈牙利命名法:iCount、bCorrect
。x 字首命名:m_desc
。x 介面、實作:IShapeFactory(其實這個我個人很難接受)、ShapeFactoryImp
-
結構、類別的命名
使用名詞或名詞片語命名。避免使用:Manager、Processor、Data、Info等無意義的贅字。
-
不要裝可愛
。x HolyHandGrenade(神聖手榴彈)
。o DeleteItems
-
添加有意義的上下文資訊
例如在描述地址的情境中,將 state 的變數名稱改為 addrSate 會更容易閱讀。
-
別添加無意義的上下文資訊
例如有一名為 GasStationDeluxe (豪華版加油站)的物件,其相關變數:GSDAddress、GSDxxxxxxxx、GSDooooooo,GSD 的前綴字都是無意義的,應該去除。