设计模式之美 精华总结 笔记(一)
文章目錄
- 設(shè)計(jì)模式之美 精華總結(jié) 筆記(一)
- 一、為什么學(xué)習(xí)設(shè)計(jì)模式
- 二、如何評判代碼質(zhì)量的高低
- 三、如何實(shí)現(xiàn)高質(zhì)量代碼的編寫
- 四、面向?qū)ο蟆⒃O(shè)計(jì)原則、設(shè)計(jì)模式、編程規(guī)范、重構(gòu) 五者關(guān)系、
- 五、總結(jié)
- 六、附上總結(jié)圖
設(shè)計(jì)模式之美 精華總結(jié) 筆記(一)
一、為什么學(xué)習(xí)設(shè)計(jì)模式
1、避免寫爛代碼
2、提高復(fù)雜代碼的設(shè)計(jì)和開發(fā)能力
3、讀源碼、學(xué)框架事半功倍
二、如何評判代碼質(zhì)量的高低
常見的形容詞:
靈活性(flexibility)、可擴(kuò)展性(extensibility)、可維護(hù)性(maintainability)、可 讀性(readability)、可理解性(understandability)、易修改性(changeability)、 可復(fù)用(reusability)、可測試性(testability)、模塊化(modularity)、高內(nèi)聚低耦 合(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)、穩(wěn)定性(stability)、優(yōu)雅(elegant)、好(good)、壞(bad) ……
幾個(gè)最常用,最重要的標(biāo)準(zhǔn):
可維護(hù)性、可讀性、可擴(kuò)展性、靈活性、簡潔性(簡單、復(fù)雜)、可復(fù)用性、可測試性。
1、易維護(hù)性 (maintainability)
代碼易維護(hù)”就是指,在不破壞原有代碼設(shè)計(jì)、不引入新的 bug 的情況 下,能夠快速地修改或者添加代碼。所謂“代碼不易維護(hù)”就是指,修改或者添加代碼需要 冒著極大的引入新 bug 的風(fēng)險(xiǎn),并且需要花費(fèi)很長的時(shí)間才能完成。
2、可讀性 (readability)
如何評價(jià)一段代碼的可讀性:
代碼是否符合編碼規(guī)范、命名是否達(dá)意、注釋是否詳盡、函數(shù)是否長短合適、模塊劃分是否清晰、是否符合高內(nèi)聚低耦合等等
3、可擴(kuò)展性 (extensiblity)
在不修改或少量修改原有代碼的情況下,通過擴(kuò)展的方式添加新的功能代碼
一項(xiàng)重要的設(shè)計(jì)原則:對修改關(guān)閉,對擴(kuò)展開放
4、靈活性 (flexibility)
5、簡潔性 (simplicity)
KISS 原則:“Keep It Simple, Stupid”。這個(gè)原則說的意思就是,盡量保持代碼簡單。代碼簡單、邏輯清晰,也就意味 著易讀、易維護(hù)。我們在編寫代碼的時(shí)候,往往也會把簡單、清晰放到首位。
不過,很多編程經(jīng)驗(yàn)不足的程序員會覺得,簡單的代碼沒有技術(shù)含量,喜歡在項(xiàng)目中引入一 些復(fù)雜的設(shè)計(jì)模式,覺得這樣才能體現(xiàn)自己的技術(shù)水平。實(shí)際上,思從深而行從簡,真正的 高手能云淡風(fēng)輕地用最簡單的方法解決最復(fù)雜的問題。這也是一個(gè)編程老手跟編程新手的本 質(zhì)區(qū)別之一。
6、可復(fù)用性(reusability)
盡量減少重復(fù)代碼的編寫,復(fù)用已有的代碼。
繼承、多態(tài)存在的目的之一,就是為了提高代碼的可復(fù)用性
一項(xiàng)重要的設(shè)計(jì)原則:單一職責(zé)原則
7、可測試性(testability)
(評論區(qū)有個(gè)朋友說的TDD - Test Driven Development)
三、如何實(shí)現(xiàn)高質(zhì)量代碼的編寫
掌握更加細(xì)化的編程思想以及更能落地的編程方法論。
包含面向?qū)ο蟮脑O(shè)計(jì)思想、設(shè)計(jì)原則、設(shè)計(jì)模式、編碼規(guī)范、重構(gòu)技巧
四、面向?qū)ο蟆⒃O(shè)計(jì)原則、設(shè)計(jì)模式、編程規(guī)范、重構(gòu) 五者關(guān)系、
前情提要:
面向?qū)ο蟮乃拇筇匦?封裝、抽象、繼承、多態(tài)面向?qū)ο缶幊膛c面向過程編程的區(qū)別和聯(lián)系面向?qū)ο蠓治觥⒚嫦驅(qū)ο笤O(shè)計(jì)、面向?qū)ο缶幊探涌诤统橄箢惖膮^(qū)別以及各自的應(yīng)用場景基于接口而非實(shí)現(xiàn)編程的設(shè)計(jì)思想多用組合少用繼承的設(shè)計(jì)思想面向過程的貧血模型和面向?qū)ο蟮某溲P?1、設(shè)計(jì)原則
SOLID 原則 -SRP 單一職責(zé)原則
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、設(shè)計(jì)模式(經(jīng)典23種)
三種:創(chuàng)建型、結(jié)構(gòu)型、行為型
- 創(chuàng)建型:
常用的有: 單例模式、工廠模式(工廠方法和抽象工廠)、建造者模式。
不常用的有: 原型模式。
- 結(jié)構(gòu)型:
常用的有: 代理模式、橋接模式、裝飾者模式、適配器模式。
不常用的有: 門面模式、組合模式、享元模式。
- 行為型:
常用的有: 觀察者模式、模板模式、策略模式、職責(zé)鏈模式、迭代器模式、狀態(tài)模式。
不常用的有: 訪問者模式、備忘錄模式、命令模式、解釋器模式、中介模式。
3、編碼規(guī)范
4、代碼重構(gòu)
重構(gòu)的目的(why)、對象(what)、時(shí)機(jī)(when)、方法(how);
保證重構(gòu)不出錯(cuò)的技術(shù)手段:單元測試和代碼的可測試性;
兩種不同規(guī)模的重構(gòu):大重構(gòu)(大規(guī)模高層次)和小重構(gòu)(小規(guī)模低層次)。
五、總結(jié)
-
面向?qū)ο缶幊桃驗(yàn)槠渚哂胸S富的特性(封裝、抽象、繼承、多態(tài)),可以實(shí)現(xiàn)很多復(fù)雜的設(shè)計(jì)思路,是很多設(shè)計(jì)原則、設(shè)計(jì)模式等編碼實(shí)現(xiàn)的基礎(chǔ)。
-
設(shè)計(jì)原則是指導(dǎo)我們代碼設(shè)計(jì)的一些經(jīng)驗(yàn)總結(jié),對于某些場景下,是否應(yīng)該應(yīng)用某種設(shè)計(jì)模式,具有指導(dǎo)意義。比如,“開閉原則”是很多設(shè)計(jì)模式(策略、模板等)的指導(dǎo)原則。
-
設(shè)計(jì)模式是針對軟件開發(fā)中經(jīng)常遇到的一些設(shè)計(jì)問題,總結(jié)出來的一套解決方案或者設(shè)計(jì)思路。應(yīng)用設(shè)計(jì)模式的主要目的是提高代碼的可擴(kuò)展性。從抽象程度上來講,設(shè)計(jì)原 則比設(shè)計(jì)模式更抽象。設(shè)計(jì)模式更加具體、更加可執(zhí)行。
-
編程規(guī)范主要解決的是代碼的可讀性問題。編碼規(guī)范相對于設(shè)計(jì)原則、設(shè)計(jì)模式,更加具體、更加偏重代碼細(xì)節(jié)、更加能落地。持續(xù)的小重構(gòu)依賴的理論基礎(chǔ)主要就是編程規(guī)范。
-
重構(gòu)作為保持代碼質(zhì)量不下降的有效手段,利用的就是面向?qū)ο蟆⒃O(shè)計(jì)原則、設(shè)計(jì)模式、編碼規(guī)范這些理論。
六、附上總結(jié)圖
總結(jié)
以上是生活随笔為你收集整理的设计模式之美 精华总结 笔记(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: localStorage数据丢失
- 下一篇: Dapr专题之06Actors