代碼整潔之道——有意義的命名(筆記)

名副其實

選個好名字要花時間,但省下來的時間會比花掉的多。注意命名,而且一旦發現有更好的名稱,馬上換掉舊的。
變量、函數或類的名稱應該已經答覆了所有的大問題。它該告訴你,它爲什麼會存在,它做什麼事,應該怎麼用。如果名稱需要註釋來補充,那就不算是名副其實。

避免誤導

必須避免留下掩藏代碼本意的錯誤線索,應當避免使用與本意相悖的詞,提防使用不同之處較小的名稱。真正可怕的是用小寫字母l和大寫字母O作爲變量名,因爲它們看起來完全就像是數字1和0。

做有意義的區分

以數字系列命名(a1,a2,。。。)是依義命名的對立面,這樣的名稱純屬誤導,沒有提供任何有用的信息;廢話也是一種沒意義的區分,Variable一詞永遠不應當出現在變量名中,Table一詞永遠不應當出現在表名中。如果缺少明確的約定,theMessage和message沒區別。要區分名稱,就要以讀者能鑑別不同之處的方式來區分。

使用讀得出來的名稱

如果名稱讀不出來,討論的時候就會像個傻鳥。直接使用恰當的英語詞,而不要傻乎乎的自造詞。

使用可搜索的名稱

單字母名稱僅試用於短方法中的本地變量。名稱長短應與其作用域大小相對應。若變量或常量可能在代碼中多處使用,則應賦其以便於搜索的名稱。

避免使用編碼

編碼已經太多,無謂再自找麻煩。把類名或作用域編進名稱裏面,徒然增加了解碼負擔。不必使用m_前綴來標明成員變量。應當把類和函數做的足夠小,消除對成員前綴的需要。人們會很快學會無視前綴或後綴,只看到名稱中有意義的部分。代碼讀的越多,眼中就越沒有前綴,最後,前綴變成了不如法眼的廢料。

避免思維映射

不應當讓讀者在腦中把你的名稱翻譯爲他們熟知的名稱。

類名

類名和對象名應該是名詞或名詞短語。類名不應當是動詞。

方法名

方法名應當是動詞或動詞短語。屬性訪問器、修改器和斷言應該根據其值命名,並依Javabean標準加上get、set和is前綴。重載構造器時,使用描述參數的靜態工廠方法。

每個概念對應一個詞

給每個抽象概念選一個詞,並且一以貫之。如使用fetch、retrieve、get來給多個類中的同種方法命名,你怎麼能記得住哪個類的哪個方法?函數名稱應當獨一無二,而且要保持一致,這樣你才能不借助多餘的瀏覽就找到正確的方法。

別用雙關語

避免將同一單詞用於不同的目的。如果遵循“一詞一義”規則,可能在好多類裏面都會有add方法,只要這些add方法的參數列表和返回值在語義上等價,就一切順利。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章