设计模式之美 精华总结 笔记(一)
文章目錄
- 設計模式之美 精華總結 筆記(一)
- 一、為什么學習設計模式
- 二、如何評判代碼質量的高低
- 三、如何實現高質量代碼的編寫
- 四、面向對象、設計原則、設計模式、編程規范、重構 五者關系、
- 五、總結
- 六、附上總結圖
設計模式之美 精華總結 筆記(一)
一、為什么學習設計模式
1、避免寫爛代碼
2、提高復雜代碼的設計和開發能力
3、讀源碼、學框架事半功倍
二、如何評判代碼質量的高低
常見的形容詞:
靈活性(flexibility)、可擴展性(extensibility)、可維護性(maintainability)、可 讀性(readability)、可理解性(understandability)、易修改性(changeability)、 可復用(reusability)、可測試性(testability)、模塊化(modularity)、高內聚低耦 合(high cohesion loose coupling)、高效(high effciency)、高性能(high performance)、安全性(security)、兼容性(compatibility)、易用性 (usability)、整潔(clean)、清晰(clarity)、簡單(simple)、直接 (straightforward)、少即是多(less code is more)、文檔詳盡(well- documented)、分層清晰(well-layered)、正確性(correctness、bug free)、健 壯性(robustness)、魯棒性(robustness)、可用性(reliability)、可伸縮性 (scalability)、穩定性(stability)、優雅(elegant)、好(good)、壞(bad) ……
幾個最常用,最重要的標準:
可維護性、可讀性、可擴展性、靈活性、簡潔性(簡單、復雜)、可復用性、可測試性。
1、易維護性 (maintainability)
代碼易維護”就是指,在不破壞原有代碼設計、不引入新的 bug 的情況 下,能夠快速地修改或者添加代碼。所謂“代碼不易維護”就是指,修改或者添加代碼需要 冒著極大的引入新 bug 的風險,并且需要花費很長的時間才能完成。
2、可讀性 (readability)
如何評價一段代碼的可讀性:
代碼是否符合編碼規范、命名是否達意、注釋是否詳盡、函數是否長短合適、模塊劃分是否清晰、是否符合高內聚低耦合等等
3、可擴展性 (extensiblity)
在不修改或少量修改原有代碼的情況下,通過擴展的方式添加新的功能代碼
一項重要的設計原則:對修改關閉,對擴展開放
4、靈活性 (flexibility)
5、簡潔性 (simplicity)
KISS 原則:“Keep It Simple, Stupid”。這個原則說的意思就是,盡量保持代碼簡單。代碼簡單、邏輯清晰,也就意味 著易讀、易維護。我們在編寫代碼的時候,往往也會把簡單、清晰放到首位。
不過,很多編程經驗不足的程序員會覺得,簡單的代碼沒有技術含量,喜歡在項目中引入一 些復雜的設計模式,覺得這樣才能體現自己的技術水平。實際上,思從深而行從簡,真正的 高手能云淡風輕地用最簡單的方法解決最復雜的問題。這也是一個編程老手跟編程新手的本 質區別之一。
6、可復用性(reusability)
盡量減少重復代碼的編寫,復用已有的代碼。
繼承、多態存在的目的之一,就是為了提高代碼的可復用性
一項重要的設計原則:單一職責原則
7、可測試性(testability)
(評論區有個朋友說的TDD - Test Driven Development)
三、如何實現高質量代碼的編寫
掌握更加細化的編程思想以及更能落地的編程方法論。
包含面向對象的設計思想、設計原則、設計模式、編碼規范、重構技巧
四、面向對象、設計原則、設計模式、編程規范、重構 五者關系、
前情提要:
面向對象的四大特性:封裝、抽象、繼承、多態面向對象編程與面向過程編程的區別和聯系面向對象分析、面向對象設計、面向對象編程接口和抽象類的區別以及各自的應用場景基于接口而非實現編程的設計思想多用組合少用繼承的設計思想面向過程的貧血模型和面向對象的充血模型1、設計原則
SOLID 原則 -SRP 單一職責原則
SOLID 原則 -OCP 開閉原則
SOLID 原則 -LSP 里式替換原則
SOLID 原則 -ISP 接口隔離原則
SOLID 原則 -DIP 依賴倒置原則
DRY 原則(don’t repeat yourself)、KISS 原則(keep it simple and stupid)、YAGNI 原則(you Ian’t gonna need it)、LOD 法則(law of demeter)
2、設計模式(經典23種)
三種:創建型、結構型、行為型
- 創建型:
常用的有: 單例模式、工廠模式(工廠方法和抽象工廠)、建造者模式。
不常用的有: 原型模式。
- 結構型:
常用的有: 代理模式、橋接模式、裝飾者模式、適配器模式。
不常用的有: 門面模式、組合模式、享元模式。
- 行為型:
常用的有: 觀察者模式、模板模式、策略模式、職責鏈模式、迭代器模式、狀態模式。
不常用的有: 訪問者模式、備忘錄模式、命令模式、解釋器模式、中介模式。
3、編碼規范
4、代碼重構
重構的目的(why)、對象(what)、時機(when)、方法(how);
保證重構不出錯的技術手段:單元測試和代碼的可測試性;
兩種不同規模的重構:大重構(大規模高層次)和小重構(小規模低層次)。
五、總結
-
面向對象編程因為其具有豐富的特性(封裝、抽象、繼承、多態),可以實現很多復雜的設計思路,是很多設計原則、設計模式等編碼實現的基礎。
-
設計原則是指導我們代碼設計的一些經驗總結,對于某些場景下,是否應該應用某種設計模式,具有指導意義。比如,“開閉原則”是很多設計模式(策略、模板等)的指導原則。
-
設計模式是針對軟件開發中經常遇到的一些設計問題,總結出來的一套解決方案或者設計思路。應用設計模式的主要目的是提高代碼的可擴展性。從抽象程度上來講,設計原 則比設計模式更抽象。設計模式更加具體、更加可執行。
-
編程規范主要解決的是代碼的可讀性問題。編碼規范相對于設計原則、設計模式,更加具體、更加偏重代碼細節、更加能落地。持續的小重構依賴的理論基礎主要就是編程規范。
-
重構作為保持代碼質量不下降的有效手段,利用的就是面向對象、設計原則、設計模式、編碼規范這些理論。
六、附上總結圖
總結
以上是生活随笔為你收集整理的设计模式之美 精华总结 笔记(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: localStorage数据丢失
- 下一篇: asp.net ajax控件工具集 Au