第一章 整潔代碼(時時保持代碼整潔)
1、簡單代碼規(guī)則:
能通過所有測試
沒有重復代碼
體現(xiàn)系統(tǒng)中的全部設計理念
包括盡量少的實體,比如類、方法、函數(shù)等
第二章 有意義的命名
1、名副其實,可以增加代碼的可讀性(名稱需要注釋來補充,就不算是名副其實。)
2、避免使用與本意相悖的詞
3、做有意義的區(qū)分(如以數(shù)字系列命名:a1,a2,...),這樣的命名并沒有提供正確的信息,要以讀者能鑒別不同之處的方式來區(qū)分(廢話是另一種沒意義的區(qū)分)
4、使用可搜索的名稱:盡量避免在代碼中出現(xiàn)魔術數(shù)字
5、類名和對象名應該是名詞或名詞短語,方法名應該是動詞或動詞短語
第三章 函數(shù)
1、函數(shù)的第一規(guī)則是要短小,第二條規(guī)則是還要更短?。ń?jīng)驗之談)
原則:函數(shù)應該做一件事,做好這件事。只做這一件事。(Service中)
要判斷函數(shù)是否不止做了一件事,就是看是否能再拆出一個函數(shù)且該函數(shù)不僅僅只是單純地重新詮釋其實現(xiàn)。
2、使用描述性的名稱:不要害怕長名稱,長而具有描述性的名稱,要比短而令人費解的名稱好。
3、函數(shù)參數(shù):最理想的參數(shù)數(shù)量是零(零參數(shù)函數(shù)),其次是一(單參數(shù)函數(shù)),再次是二(雙參數(shù)函數(shù)),應盡量避免三(三參數(shù)函數(shù)or多參數(shù)函數(shù)),(可讀性和測試覆蓋率高)
4、標識參數(shù)(極不推薦true or false),這說明該函數(shù)不止做了一件事。
5、如果函數(shù)看來需要兩個、三個或三個以上參數(shù),就說明其中一些參數(shù)應該封裝為類了如:
Circle makeCircle(double x, double y, double radius);
Circle makeCircle(Point center, double radius);
6、使用異常替代返回錯誤碼(拋出錯誤,捕捉)
7、每個代碼塊都應該有一個入口,一個出口(即每個函數(shù)中只該有一個return語句
第四章 注釋
1、好注釋是必須的(真正好的注釋是你想辦法不去寫的注釋)
第五章 格式
1、概念間垂直方向上的區(qū)隔: 在聲明,每個函數(shù)之間用空白行隔開(參考psr文檔 https://www.php-fig.org, https://psr.phphub.org/)
2、垂直方向上的靠近:緊密相關的代碼應該相互靠近
3、盡量保持代碼行短
4、縮進?
5、團隊規(guī)則:一組開發(fā)者應當采用一種格式風格
一次提交只干一件事
第九章? 單元測試
1.TDD三定律
定律一? 在編寫不能通過的單元測試前,不可編寫生產(chǎn)代碼
定律二? 只可編寫剛好無法通過的單元測試,不能編譯也算不通過
定律三? 只可編寫剛好足以通過當前失敗測試的生產(chǎn)代碼
2.保持整潔測試:測試代碼和生產(chǎn)代碼一樣重要
3、整潔的測試:可讀性
每個測試都應該清晰的拆分為三個環(huán)節(jié):構造測試數(shù)據(jù),操作測試數(shù)據(jù),檢驗操作是否得到期望的結果
4、每個單元測試中的斷言數(shù)量應該最小化
5、F.I.R.S.T
快速(Fast),獨立(Independent),可重復(Repeatable),自足驗證(Self-Validating),及時(Timely)
第十章 類
1、類應該短?。和ㄟ^權責(responsibility)來衡量
單一權責原則,內(nèi)聚,依賴倒置原則
第12章 迭進
1、簡單設計規(guī)則:
運行所有測試;不可重復;表達了程序員的意圖;盡可能減少類和方法的數(shù)量