[Clean Code] 命名 Naming

這是寫程式最基礎也最困難的問題...先撇除英文單字詞彙不足的問題,單單在命名的原則上就有很多值得注意之處。

  • 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 )

  • 避免編碼

匈牙利命名法:iCount、bCorrect
字首命名:m_desc
介面、實作:IShapeFactory(其實這個我個人很難接受)、ShapeFactoryImp

  • 結構、類別的命名

使用名詞或名詞片語命名。避免使用:Manager、Processor、Data、Info等無意義的贅字。

  • 不要裝可愛

HolyHandGrenade(神聖手榴彈)
o DeleteItems

  • 添加有意義的上下文資訊

例如在描述地址的情境中,將 state 的變數名稱改為 addrSate 會更容易閱讀。

  • 別添加無意義的上下文資訊

例如有一名為 ​GasStationDeluxe (豪華版加油站)的物件,其相關變數:GSDAddress、GSDxxxxxxxx、GSDooooooo,GSD 的前綴字都是無意義的,應該去除。