《代码整洁之道》读后感
最近在看Bob大叔的《代碼整潔之道》,收益頗多,有些怕忘記,然更多則是做記錄時,會理解的更加深刻,力求描述清楚,需要對知識更深的理解,遂在此做筆記。共同探討,共同學習。
一 簡潔設計原則
Bob大叔借鑒過多位行業大牛說過的話,總結出構建簡潔之道:
二 命名必須有有意義
包含有variable、method、parameter、class、package,甚至是jar文件,war文件,ear文件。那么該怎么命名呢,有很多的規則
三 函數(method)
參考類,juc中的ReentrantLock.java,我看完所有的代碼,發現最長的一個method是15行,大多是1到5行代碼就搞定。
四 注釋
注釋的恰當用法是彌補我們在用代碼表達意圖時遭遇的失敗。代碼可以表達清楚的事情,就不要用注釋。除非你要寫復雜的并發代碼,或者是通用框架類,否則一般的業務代碼就盡量不要用到注釋。代碼可以被修改,但別人基本不會修改你寫的注釋,這會使得注釋具有誤導性。真實只有一處地方有:代碼。代碼會告訴你它做的事情,唯一準確的信息來源。
注釋掉的代碼直接刪除,無需留著,源代碼控制工具(git,svn)會幫我們記錄這一切的。
五 格式
我們大多數人使用的開發工具(eclipse和idea),已經自帶了格式化規范。在代碼寫完之后,使用快捷鍵格式化一下即可。
函數如果有調用的關系,則盡量把他們放在一起,而且調用者應該盡可能放在被調用者上邊。
這里需要提一下的就是代碼規范規則,目前國內Java行業標準有阿里開源的開發規范,已經被很多的公司采用,使用阿里規范作為標準也是不錯的。
六 對象和數據結構
對于面向對象編程來說,這一章的內容其實意義不是特別大,因為基本的規則現在已經定義好了。只是Bob大叔當時的代碼理念可能還沒有像現在這么全面。唯一需要說的就是迪米特法則(Law of Demeter),這個我會在附錄中列舉出來。
七 錯誤處理
八 邊界
在和第三方的接口進行交互的時候,極力推薦將應該讓別人知道的方法放出來,而其他對別人無用的接口則封裝起來。
對第三方的代碼編寫一些測試,以便新版本發布后,還可以繼續使用。
假定一些dummy數據來作為第三方數據的來源。
對于第三方的接口,我們可以用Adapter模式來做一些適配。
九 測試
測試這一章基本放棄了,因為我們公司不注重測試,也沒有寫過單元測試。但規則還是一樣的。
十 類
類應該盡量設計的短小一些。這里會涉及到3個原則,單一職責原則、開閉原則和依賴倒置原則。
十一 如何建造一個城市
十二 迭進
十三 并發編程
并發編程用的較少,不發表意見。建議掌握java.util.concurrent、java.util.concurrent.atomic和java.utils.concurrent.locks包。
十四到十六
這三章是3個真實的案例,通過代碼實踐了一些思想??蓪φ罩哒碌囊黄鸱治?。
十七 味道與啟發
17.1 注釋
17.2 環境
17.3 函數
17.4 一般性問題
17.5 Java
17.6 名稱
17.7 測試
附錄
1. 開閉原則:open-close principle
一個軟件實體諸如類或模塊或函數應該對擴展開放,對修改關閉。用抽象構建框架,用實現擴展細節。
優點:提高軟件系統的可復用性以及可維護性。
2. 依賴倒置原則:Dependence Inversion Principle
程序要依賴于抽象接口,不要依賴于具體實現。簡單的說就是要求對抽象進行編程,不要對實現進行編程,這樣就降低了客戶與實現模塊間的耦合。
3. 單一職責原則:Single Responsibility Principle
不要存在多于一個導致類變更的原因
一個類,接口,方法只負責一項職責
優點:降低類的復雜度,提高類的可讀性,提高系統的可維護性,降低變更引起的風險。
4. 接口隔離原則:Interface Segregation Principle
客戶端不應該依賴它不需要的接口。一個類對另一個類的依賴應該建立在最小的接口上。
使用多個專門的接口比使用單一的總接口要好。
一個類對另外一個類的依賴性應當是建立在最小的接口上的。
優點:1.避免接口污染;2.提高靈活性;3.提供定制服務;4.實現高內聚
5. 迪米特法則:Law Of Demeter
一個對象應該對其他對象保持最少的了解。又叫最少知道法則。
盡量降低類與類之間的耦合。
優點:降低類之間的耦合。
6. 里氏替換原則:Liskov Substitution Principle LSP
里氏替換原則(LSP)是面向對象設計的基本原則之一。 里氏替換原則中說,任何基類可以出現的地方,子類一定可以出現。 LSP是繼承復用的基石,只有當衍生類可以替換掉基類,軟件單位的功能不受到影響時,基類才能真正被復用,而衍生類也能夠在基類的基礎上增加新的行為
優點:1.約束繼承泛濫,開閉原則的一種體現。
2.加強程序的健壯性,同時變更時也可以做到非常好的兼容性,提高程序的維護性,擴展性。降低需求變更時引入的風險。
7. 合成復用原則:Composite Reuse Principle CRP
它要求在軟件復用時,要盡量先使用組合或者聚合等關聯關系來實現,其次才考慮使用繼承關系來實現。
優點:
總結
以上是生活随笔為你收集整理的《代码整洁之道》读后感的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python无法使用1号gpu_详解te
- 下一篇: es6 --- 使用proxy对数据进