目錄
- 01 - 什么是好的代碼?
- 02 - 評價代碼的標準有哪些
- 2.1 可維護性(maintainability)
- 2.2 可讀性(readability)
- 2.3 可擴展性(extensibility)
- 2.4 簡潔性(simplicity)
- 2.5 可復用性(reusability)
- 2.6 可測驗性(testability)
- 03 - 本篇總結
- 著作權宣告
01 - 什么是好的代碼?
對開發人員來說,辨別代碼的“好”和“爛”,是個非常重要的能力,這也是我們寫出好代碼的前提,
那什么是好的代碼,我們應該從哪些維度評判代碼質量的高低呢?
答案是:很難通過某(幾)個詞匯來全面地評價代碼質量,
“評價”這個詞本身就有很強的主觀性,每個人的標準都不盡一致,但不可否認的是,越有經驗的工程師,給出的評價也就越準確,
02 - 評價代碼的標準有哪些
2.1 可維護性(maintainability)
“維護”,就是修改 bug、修改老代碼、添加新代碼之類的作業,
- “代碼易維護”,就是在不破壞原有代碼設計、不引入新 bug 的情況下,能夠快速修改或者添加代碼,
- “代碼不易維護”,就是修改或者添加代碼時很可能引入新的 bug,并且需要花費很長的時間才能完成,
大多數專案中,維護代碼的時間要遠多于撰寫代碼的時間,所以代碼的可維護性非常重要,
影響代碼的可維護性的因素有很多,比如:
- 代碼的分層是否清晰,模塊化是否良好,模塊間耦合性是否足夠低(要高內聚、低耦合);
- 專案代碼量的多少,業務的復雜程度,使用到的技術的復雜程度;
- 另外,各類程序檔案的撰寫、團隊成員的開發水平等因素也會影響代碼的可維護性,
2.2 可讀性(readability)
首先,代碼被閱讀的次數要遠遠超過被撰寫、修改的次數,讀不懂代碼,就很難安全地添加新功能、修復舊 bug,
代碼的可讀性,與代碼是否符合編碼規范、代碼的命名(包括類、函式、變數等)是否達意、注釋是否詳盡、函式是否長短合適、模塊劃分是否清晰等因素有關,
影響代碼的可維護性的因素有很多,比如:
- Code Review(代碼審查)是個很好的測驗代碼可讀性的方法,
- 如果你的同事可以輕松讀懂你寫的代碼,說明你的代碼可讀性很好;
- 如果其他人在讀你的代碼時,有很多疑問,說明你的代碼可讀性并不高,
2.3 可擴展性(extensibility)
可擴展性表示代碼應對未來需求變化的能力,
如果原有的代碼已經預留好了擴展點(比如原代碼中抽象了很多底層可以復用的模塊),我們在修改很少代碼的情況下,添加新的功能,
這個時候,就可以說代碼的可擴展性好,也可以說成代碼的靈活性(flexibility)好,
影響代碼的可維護性的因素有很多,比如:
代碼的可讀性和可擴展性,在很大程度上決定了代碼是否有良好的維護性,
2.4 簡潔性(simplicity)
用最簡單的方法解決最復雜的問題,能做到這一點的,都是真正的大牛,
程式開發中有個很有名的 KISS 原則:“Keep It Simple, Stupid”,就是說要盡量保持代碼簡單,甚至于傻瓜化,這其實也意味著代碼易讀、易維護,
2.5 可復用性(reusability)
開發程序中,要多復用已有的代碼,盡力避免堆砌重復(相似)的代碼,
與可復用性相關的設計原則和實踐經驗有:
- 與 KISS 原則齊名的 DRY(Don’t Repeat Yourself)原則,強調的就是要提高代碼的可復用性;
- 有面向物件編程基礎的同學,應該都知道繼承、多型存在的目的之一,就是提高代碼的可復用性;
- 單一職責原則、解耦、高內聚、模塊化等實踐經驗都能提高代碼的可復用性,
2.6 可測驗性(testability)
這個評判維度比較少提及,但卻是非常重要的代碼質量評價標準,
為了降低線上的故障率,我們的代碼需要通過測驗環節的檢驗,可測驗性良好的代碼有利于撰寫單元測驗,有利于我們在測驗環節更全面地發現問題、更快地定位到是哪些代碼產生了這些問題,
可測驗性高的代碼大多有這些特征:
職責單一;
輸入明確(可控制);
輸出清晰(可預測);
運算狀態(一般是錯誤狀態)可見;……
03 - 本篇總結
設計問題沒有標準答案,關鍵是我們要有自己的思考:
為什么有這種設計原則、思想或模式?
它能解決什么問題?有哪些應用場景?
該如何權衡、恰當地在專案中應用?
同時要認識到,上述評價維度 不是完全獨立 的,有些具有包含關系,也有的會互相影響,比如:
代碼的可讀性好、可擴展性好,就意味著代碼的可維護性好;
有些代碼的可擴展性和可復用性好,抽象出了很多介面、類和方法,但卻又導致代碼的可讀性和簡潔性下降,
現在,我們摸清了好代碼的樣子,也知道了好代碼的常見評判標準,接下來我們就要學習各類設計原則和設計思想了哦,
開始期待吧 ??
參考資料:
極客時間-王爭《設計模式之美》
著作權宣告
作者: 瘦風(https://healchow.com)
出處: 博客園 瘦風的博客(https://www.cnblogs.com/shoufeng)
感謝閱讀, 右側導航欄有「瘦風的南墻」公眾號二維碼,輸出更及時、更體系,歡迎掃碼關注??
本文著作權歸博主所有, 歡迎轉載, 但 [必須在頁面明顯位置標明原文鏈接], 否則博主保留追究相關人士法律責任的權利.
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/22719.html
標籤:設計模式
