高質量代碼

做開發也有幾年時間了,發現寫的代碼質量並沒有上升,需求變更多,代碼就越爛,只是實現了功能罷了,因此,打算整理下代碼的規範,重構,質量方面的信息,加強學習。

目的是提高代碼的清晰度和可重用性,使代碼整潔,易讀。

面向對象設計原則:
1.單一職責原則(Single Responsibility Principle, SRP):一個類只負責一個功能領域中的相應職責,或者可以定義爲:就一個類而言,應該只有一個引起它變化的原因。
2.開閉原則(Open-Closed Principle, OCP):一個軟件實體應當對擴展開放,對修改關閉。即軟件實體應儘量在不修改原有代碼的情況下進行擴展。
3.里氏代換原則(Liskov Substitution Principle, LSP):所有引用基類(父類)的地方必須能透明地使用其子類的對象。
4.依賴倒轉原則(Dependency Inversion Principle, DIP):抽象不應該依賴於細節,細節應當依賴於抽象。換言之,要針對接口編程,而不是針對實現編程。
5.接口隔離原則(Interface Segregation Principle, ISP):使用多個專門的接口,而不使用單一的總接口,即客戶端不應該依賴那些它不需要的接口。
6.迪米特法則(Law of Demeter, LoD):一個軟件實體應當儘可能少地與其他實體發生相互作用。

1.重複代碼(Duplicated Code)
出現的情況:
相同的代碼結構重複出現不同地方時,我們可以將它們合而爲一。
兩個互爲新工地的子類內包含相同的表達式

具體採用的方法:1.採用Extract Method提煉重複代碼;2.如果兩個毫不相關的類出現重複代碼,可以考慮使用Extract Class將重複代碼提煉到一個獨立類中,然後在另一個類內使用這個新類。

  1. Long Method(過長函數)
    採用Extract Method把函數變小
    Introduce Parameter Object (引入參數對象)和 Preserve Whole Object 則可以將過長的參數列表變得更簡潔。

3 Large Class(過大的類)
可以使用Extract Class將幾個變量一起提煉至新類內,提煉時應該選擇類內彼此相關的變量將它們放在一起。如果這個組件適合作爲一個子類,也可以使用Extract Subclass。

4.Long Parameter List(過長參數列)
引入參數對象來代替

5.Divergent Change(發散式變化)
如果某個類經常因爲不同的原因在不同的方向上發生變化,當需要修改代碼時,我們希望能夠跳到系統的某一點,只在該處做修改。
針對某一外界變化的所有修改,都至應該發生在單一類中,而這個新類內的所有內容都應該反應此變化。可以運用Extract Class將他們提煉到另一個類中。

6 Shotgun Surgery (散彈式修改)
如果每遇到某種變化,你都必須在許多不同的類內做出許多小修改,此即爲Shotgun Surgery。
可以使用Move Method 和 Move Field把所有需要修改的代碼放進同一個類內。

7.多次操作數據庫使用批量操作
如果多次操作數據庫的表做插入,刪除,更新操作,應該使用批量操作提高性能。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章