二、有意義的命名

名副其實:

變量、函數或類的名稱就能夠說明為什么它存在,做什么事,怎么用,如果需要注釋來補充,就不算名副其實:

//消逝的時間,以日計, bad!
int d;

//good
int daysSinceCreation; 
int daysSinceModification;  
避免誤導

避免留下隱藏代碼本意的錯誤線索。
accountList 一組賬號,如果類型不是List會引起誤判,accountGroup或bunchOfAccoutns,甚至accounts,更可怕的例子:使用小些字母l跟字母O作為變量名

做有意義的區分

代碼是寫給人看的,僅僅是滿足編譯器的要求,就會引起混亂

  • 以數字系列命名:void copyChars(char a1[],char a2[]) ==> void copyChars(char source[],char destination[])
  • 說廢話: a, an, the, Info, Data
  • 使用可讀的名字:避免過度使用縮寫,genymdhms (生成日期,年月日時分秒)
  • 使用便于搜索的名稱:避免使用Magic Number,避免使用單字母,或出現頻率極高的短字母組合(注意度的把握);MAX_CLASSER_PER_STUDENT 跟 “7” “e”
類名

類名和對象名應該是名詞或名詞短語,Customer、Account

方法名

動詞或動詞短語:deletePage、save,屬性訪問、修改和斷言:加上get、set和is

別裝可愛

使用俗語或俚語, eatMyShorts()表示abort() eatMyShorts:去死吧

每個概念對應一個詞

給每個抽象概念選一個詞,并一以貫之。比如獲取數據可以使用fetch、retrive、get這些詞語,但最好能夠統一使用一種(controller、manager類似)

名字盡量來自解決方案領域或問題領域:
  • 使用解決方案領域名稱:使用計算機領域的科學術語、算法名、模式名等。如AccountVisitor:Visitor模式實現的Account類。
  • 使用問題領域的名稱:如果不能用程序員熟悉的術語來命名,就采用所涉問題領域的名稱。排序==> sort
適當使用有意義的語境:
  • 良好命名的類、函數、名稱空間來放置名稱,給讀者提供語境
  • 給名稱前加前綴:firstName、lastName、street、houseNumber、city、state和zipcode,和在一起知道是地址,孤零零時無法推斷, state=》addrState
  • 事不過三,如果傳遞給函數的變量超過三個,考慮封裝成概念,添加struct或class
  • 不要添加沒用的語境
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1.名副其實 比較如下兩段代碼(忽略變量未定義問題) 2.做有意義的區分 誰能說出下面這三個方法的區別? getA...
    小劉and12345閱讀 221評論 0 0
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,923評論 18 139
  • 1、引言 數據庫設計過程中表、字段等的命名規范也算是設計規范的一部分,不過設計規范更多的是為了確保數據庫設計的合理...
    SnowflakeCloud閱讀 41,090評論 0 48
  • 名副其實 選個好名字要花時間,但省下來的時間比花掉的多。 一旦發現有更好的名稱,就換掉舊的。 好的名稱會告訴你:它...
    lsh的學習筆記閱讀 224評論 0 0
  • 記得在一本書里看到一個牧師在布道的時候說,母親去世十年他還每天晚上夢到母親,醒來枕頭都是濕的,十分想念母親,希望自...
    鳳舞清林閱讀 499評論 1 2