<<代碼整潔之道 >>讀書記錄庄呈,包括:
第二章:有意義的命名
第三章:函數(shù)
第四章:注釋
2.2名副其實(shí)
使用的命令能正確明白說明發(fā)生了什么蜕煌。
2.3避免誤導(dǎo)
如:accountList派阱,只有真的是List類型诬留,才這么命名
2.4做有意義的區(qū)分
如沒意義的命名,Product贫母,ProductInfo, ProductData,無法區(qū)分意義
2.5 使用讀的出來的名稱
命名不使用自造詞文兑,使用恰當(dāng)?shù)挠⒄Z詞
2.6 使用可搜索的名稱
找WORK_DAYS_PER_WEEK很容易,但是找5很難找
2.7 避免使用編碼
2.7.1 匈牙利命名法:現(xiàn)在不適用
如:PhoneNumber phoneString腺劣,類型改變時(shí)绿贞,名稱并不會(huì)改變,對(duì)于用戶會(huì)難以理解
2.7.2 成員前綴
消除對(duì)于成員前綴的需要
2.8 避免思維映射
明確是王道橘原,應(yīng)該避免把讀者在腦中把你的名稱翻譯為他們熟知的名稱籍铁。
2.9 類名
類名應(yīng)該是名詞或者名詞短語,如:Customer趾断,WikiPage拒名,Account
避免使用Manager、Processor這樣的類名
2.10 方法名
方法名應(yīng)當(dāng)是動(dòng)詞或動(dòng)詞短語芋酌,如postPayment增显,deletePage。
屬性訪問器與斷言應(yīng)該根據(jù)其值命名脐帝,并以Javabean標(biāo)準(zhǔn)加上get同云、set、is前綴
重載構(gòu)造器
2.11 別扮可愛
2.12 每個(gè)概念對(duì)應(yīng)一個(gè)詞
2.13 別用雙關(guān)語
2.14 使用解決方案領(lǐng)域的名字
2.15 使用源自所涉領(lǐng)域的名字
2.16 添加有意義的語境
如:firstName提供語境 addFirstName
2.17不要添加沒用的語境
第三章:函數(shù)
3.1 短小
3.2只做一件事
3.3 每個(gè)函數(shù)一個(gè)抽象層級(jí)
3.4 switch語句
適時(shí)使用多態(tài)
3.5 使用描述性的語句
命名方式保持一致
如:includeTeardownPages
3.6 函數(shù)參數(shù)
參數(shù)越少越好
3.6.1 一元參數(shù)的普遍形式
3.6.2 標(biāo)識(shí)參數(shù):true堵腹、false炸站,不要使用
3.6.3 二元參數(shù)
3.6.4 三元參數(shù)
3.6.5參數(shù)對(duì)象,當(dāng)參數(shù)過多時(shí)(兩個(gè)或以上)疚顷,考慮封裝為類旱易。
3.6.6 參數(shù)列表
引入數(shù)量可變的參數(shù):void triad(String name, int count, Interger... args)
3.6.7 動(dòng)詞與關(guān)鍵字
給函數(shù)取個(gè)好名字,動(dòng)詞或名詞對(duì)
如:assertExpectedEqualsActual(expected, actual)
3.7 無副作用
函數(shù)承諾只做一件事荡含,可能會(huì)做其他被藏起來的事
3.8 分隔指令和詢問
函數(shù)要么做什么事咒唆,要么回答做什么事,兩者不要兼得
3.9 使用異常替代返回錯(cuò)誤碼
3.9.1 抽離Try/Catch代碼塊
3.9.2 錯(cuò)誤處理就是一件事
如果try在某個(gè)關(guān)鍵字中出現(xiàn)释液,他就該是這個(gè)函數(shù)的第一個(gè)單詞全释,而且catch/finally后不該有其他內(nèi)容
3.9.3 Error.java依賴磁鐵
使用異常來替換枚舉錯(cuò)誤碼
3.10 別重復(fù)自己
重復(fù)兩次的代碼可以單獨(dú)抽離出來
3.11 結(jié)構(gòu)化編程
每個(gè)函數(shù)和代碼塊都應(yīng)該有一個(gè)入口和一個(gè)出口。遵循這些規(guī)則误债,每個(gè)函數(shù)只該有一個(gè)return浸船,小函數(shù)可以根據(jù)情況另說
第四章:注釋
4.1 注釋不能美化糟糕的代碼
4.2 用代碼來闡述
讓代碼代替注釋說話
4.3 好注釋
唯一好的注釋是你想辦法不去寫的注釋
4.3.1法律信息
這類不應(yīng)是合同或法典妄迁。只要有可能,就指向標(biāo)準(zhǔn)許可和其他外部文檔李命,而不是把所有的條款放到注釋中
4.3.2 提供信息的注釋
這類有時(shí)管用登淘,但更好的是利用函數(shù)名稱來提供信息。
4.3.3 對(duì)意圖的解釋
4.3.4 闡釋
幫助解釋不能修改的代碼含義
4.3.5 警示
警告其他程序員會(huì)出現(xiàn)的后果
4.3.6 TODO注釋
應(yīng)該做封字,還沒有做的事情
4.3.7 放大
放大某種不合理之物的重要性
4.3.8 JavaDoc
編寫公共API黔州,必須
4.4 壞注釋
4.4.1 喃喃自語
保證注釋被人能夠看懂
4.4.2 多余的注釋
4.4.3 誤導(dǎo)性注釋
4.4.4 循規(guī)式注解
每個(gè)函數(shù)都要注解,每個(gè)變量都要解釋是愚蠢的
4.4.5 日志式注解阔籽,不用
4.4.6 廢話式注解
4.4.7 可怕的廢話流妻,避免JavaDoc中的廢話
4.4.8 能用函數(shù)和變量時(shí)就別用注釋
4.4.9 位置標(biāo)記,刪除
4.4.10 括號(hào)后的注釋
4.4.11 歸屬和署名
4.4.12 注釋掉的代碼
4.4.13 HTML注釋笆制,禁用
4.4.14 非本地信息
注釋應(yīng)該描述最近的代碼信息
4.4.15 信息過多
不要在注釋中添加無關(guān)的信息
4.4.16 不明顯聯(lián)系
代碼和注釋應(yīng)該相互聯(lián)系
4.4.17 函數(shù)頭
短函數(shù)不需要描述绅这,選個(gè)好名字比使用函數(shù)頭注釋有用的多
4.4.18 非公共代碼中的javadoc