一、前言
? ? 1. 你是程序員,你想成為更好的程序員。
? ? 2. 永遠拋不不掉代碼,因為代碼呈現(xiàn)了需求的細節(jié)。
? ? 3. 讀與寫花費時間的比例超過10:1。
? ? 4. 代碼質(zhì)量與其整潔度成正比。
????5. 離開時要比發(fā)現(xiàn)時更整潔。
二、代碼整潔之思路
? ? 1. 命名:有意義的命名,有意義的語境,有意義的區(qū)分;可搜索的名稱;類名和對象名應(yīng)該是名詞或名詞短語,如Account、Customer;方法名應(yīng)當(dāng)是動詞或動詞短語,如postPayment、deletePage。取技術(shù)性的名稱,通常是最靠譜的做法。
? ? 2. 函數(shù):函數(shù)的規(guī)則是要短小,每個函數(shù)都只做一件事;理想的函數(shù)參數(shù)數(shù)量是零,其次是一,再次是二,三個或三個以上考慮封裝為類;函數(shù)和參數(shù)應(yīng)當(dāng)形成一種良好的動詞/名稱對形式,如writeFiled(name)、checkPassword(String userName, String password);控制和消除重復(fù)。
? ? 3. 注釋:需要注釋,更需要表述正確的注釋,否則注釋會誤導(dǎo),以及堅持維護正確的注釋。
? ? 4. 格式:代碼的可讀性會對以后可能發(fā)生的修改行為產(chǎn)生重要影響;垂直格式,設(shè)定每個方法不超過100行;橫向格式,設(shè)定每行代碼不超過100個字符。
? ? 5.?對象和數(shù)據(jù)結(jié)構(gòu):對象暴露行為,隱藏數(shù)據(jù);數(shù)據(jù)結(jié)構(gòu)暴露數(shù)據(jù),沒有明顯的行為。
? ? 6.?類:類應(yīng)該短小,單一權(quán)責(zé)原則,內(nèi)聚、依賴倒置原則;系統(tǒng)應(yīng)該由許多短小的類而不是少量巨大的類組成。
? ? 7.?邊界:使用第三方代碼控制不了的代碼,需要清晰的分割和定義期望測試;避免代碼過多的了解第三方代碼中的特定信息,以免日后受它控制。
? ? 8.?單元測試:測試驅(qū)動開發(fā);測試保證和增強了生產(chǎn)代碼的可擴展性、可維護性和可復(fù)用性。
? ? 9.?系統(tǒng):沒必要先做大而全的設(shè)計;將系統(tǒng)的構(gòu)造和使用分開。
? ? 10. 迭進:代碼能工作還不夠,能工作的代碼經(jīng)常會崩潰;盡早改進不合理的代碼結(jié)構(gòu)和設(shè)計;?簡單設(shè)計、重構(gòu)、不可重復(fù)?。
三、樣例??


四、代碼整潔之思考
? ? 1. 精神上的緊箍咒。
? ? 2.?初稿也許粗陋無序,經(jīng)過斟酌推敲,直至達到心目中的樣子。
? ? 3. 項目時間緊迫,也要保持整潔代碼。
? ? 4. 堅持代碼評審。
? ? 5. 不僅自己,也要讓其他開發(fā)人員容易讀懂代碼。