Clean Code——命名

在編程中取一個好名字很花時間,可是花去的時間絕對物有所值,筆者的mentro說過:「你寫代碼所花去的時間必定遠小於未來別人讀你代碼所花去的時間,因此不要給別人添麻煩。」命名就是不給別人也是不給本身添麻煩的第一步。筆者在讀完《Clean Code》的第二章後,將命名的要點總結爲兩點:精確、具體。編程

精確

命名應當精確,變量、函數或者類的名稱應該回答了全部的大問題,它應該告訴讀者,它爲何會存在,它要作或者作了什麼事,它應該如何使用,而不是用註釋來體現這些。那麼如何作到精確?筆者認爲,假如在項目中作到命名的單詞與讀者腦海的概念造成一對一的映射,便作到了命名的精確。markdown

單詞---->概念

  • 避免 單詞---->零個概念 這一狀況

要避免上述狀況就須要在命名時不要說廢話,好比以數字作區別(a一、a二、a3)就徹底沒有提供正確信息,再好比variable出如今變量名中、table出如今表名中都是在說廢話。app

  • 避免 單詞---->多個概念 這一狀況

要避免上述狀況就須要作到避免思惟映射,不要讓讀者把名稱翻譯爲他們熟知的另外一種概念,也不能一詞多意。好比在多個類中有add方法表示經過增長或鏈接兩個現有的值得到新值,假如要寫一個新方法表示把單個參數放到集羣中,那麼這個方法就不能使用add命名,而應該用insert或者append。函數

概念---->單詞

  • 爲每一抽象概念選一個詞

若是在多個類中給同種方法命名確實用了fetch、get和retrieve等多個同義詞,就會讓讀者產生困惑。因此給每一個抽象概念選一個詞而且一以貫之。fetch

具體

精確作的是把命名單詞與概念造成一對一映射,而具體則須要把這種一對一映射作的更好,而不是讀者讀了命名以後腦海中一片混沌。spa

添加有用的語境

假若有名爲firstName、lastName、street、houseNumber、city這些變量,它們在一塊兒時明顯構成了一個地址。不過當它們單獨出現時就沒法推斷它們是地址的一部分。因此能夠添加前綴爲addrFirstName、addrLastName、addrState等,以提供語境。固然,假如可以建立一個名爲Address的類則更好。翻譯

使用可讀出來的名字

編程是個社會活動,若是名稱讀不出來,那麼討論的時候就會有些尷尬。並且,使用可讀出來的名字也更容易讓讀者留下印象。code

使用可搜索的名字

單個字母名稱和數字常量很難在一大片代碼中找出來。找MAX_CLASS_PER_STUDENT比搜索數字7容易太多了。因此可以使用搜索得到準確結果的名字纔是一個合格的名字。orm

相關文章
相關標籤/搜索