2023-02-27 設(shè)計(jì)模式講的是如何寫(xiě)出可擴(kuò)展、可讀、可維護(hù)的高質(zhì)量代碼

實(shí)際上,大部分設(shè)計(jì)原則、設(shè)計(jì)思想、設(shè)計(jì)模式理解起來(lái)都不難,難的是如何將這些理論靈活恰當(dāng)?shù)貞?yīng)用到實(shí)際的開(kāi)發(fā)中

設(shè)計(jì)模式講的是如何寫(xiě)出可擴(kuò)展、可讀、可維護(hù)的高質(zhì)量代碼

如何分層、分模塊?應(yīng)該怎么劃分類(lèi)?每個(gè)類(lèi)應(yīng)該具有哪些屬性、方法?怎么設(shè)計(jì)類(lèi)之間的交互?該用繼承還是組合?該使用接口還是抽象類(lèi)?怎樣做到解耦、高內(nèi)聚低耦合?該用單例模式還是靜態(tài)方法?用工廠模式創(chuàng)建對(duì)象還是直接new出來(lái)?如何避免引入設(shè)計(jì)模式提高擴(kuò)展性的同時(shí)帶來(lái)的降低可讀性問(wèn)題?

應(yīng)對(duì)面試中的設(shè)計(jì)模式相關(guān)問(wèn)題;告別寫(xiě)被人吐槽的爛代碼;提高復(fù)雜代碼的設(shè)計(jì)和開(kāi)發(fā)能力;讓讀源碼、學(xué)框架事半功倍;為你的職場(chǎng)發(fā)展做鋪墊

有些能力,要早點(diǎn)鍛煉;有些東西,要早點(diǎn)知道;有些書(shū),要早點(diǎn)讀。這樣在你后面的生活、工作、學(xué)習(xí)中,才能一直都發(fā)揮作用。不要等到好多年后,看到了,才恍然大悟,后悔沒(méi)有早點(diǎn)去學(xué)、去看。

到底如何爛、如何好?

維度,像對(duì)人做評(píng)價(jià)一樣

靈活性(flexibility)、可擴(kuò)展性(extensibility)、可維護(hù)性(maintainability)、可讀性(readability)、可理解性(understandability)、易修改性(changeability)、可復(fù)用(reusability)、可測(cè)試性(testability)、模塊化(modularity)、高內(nèi)聚低耦合(high cohesion loose coupling)、高效(high effciency)、高性能(high performance)、安全性(security)、兼容性(compatibility)、易用性(usability)、整潔(clean)、清晰(clarity)、簡(jiǎn)單(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)……

我們并不能通過(guò)單一的維度去評(píng)價(jià)一段代碼寫(xiě)的好壞。比如,即使一段代碼的可擴(kuò)展性很好,但可讀性很差,那我們也不能說(shuō)這段代碼質(zhì)量高。

最常用的評(píng)價(jià)標(biāo)準(zhǔn)有哪幾個(gè)?

仔細(xì)看前面羅列的所有代碼質(zhì)量評(píng)價(jià)標(biāo)準(zhǔn),你會(huì)發(fā)現(xiàn),有些詞語(yǔ)過(guò)于籠統(tǒng)、抽象,比較偏向?qū)τ谡w的描述,比如優(yōu)雅、好、壞、整潔、清晰等;有些過(guò)于細(xì)節(jié)、偏重方法論,比如模塊化、高內(nèi)聚低耦合、文檔詳盡、分層清晰等;有些可能并不僅僅局限于編碼,跟架構(gòu)設(shè)計(jì)等也有關(guān)系,比如可伸縮性、可用性、穩(wěn)定性等。

為了做到有的放矢、有重點(diǎn)地學(xué)習(xí),我挑選了其中幾個(gè)最常用的、最重要的評(píng)價(jià)標(biāo)準(zhǔn),來(lái)詳細(xì)講解,其中就包括:可維護(hù)性、可讀性、可擴(kuò)展性、靈活性、簡(jiǎn)潔性(簡(jiǎn)單、復(fù)雜)、可復(fù)用性、可測(cè)試性。

可維護(hù)性:

我們可以從側(cè)面上給出一個(gè)比較主觀但又比較準(zhǔn)確的感受。如果bug容易修復(fù),修改、添加功能能夠輕松完成,那我們就可以主觀地認(rèn)為代碼對(duì)我們來(lái)說(shuō)易維護(hù)。相反,如果修改一個(gè)bug,修改、添加一個(gè)功能,需要花費(fèi)很長(zhǎng)的時(shí)間,那我們就可以主觀地認(rèn)為代碼對(duì)我們來(lái)說(shuō)不易維護(hù)

可讀性:

如果你的同事可以輕松地讀懂你寫(xiě)的代碼,那說(shuō)明你的代碼可讀性很好;如果同事在讀你的代碼時(shí),有很多疑問(wèn),那就說(shuō)明你的代碼可讀性有待提高了。

可擴(kuò)展性:

說(shuō)直白點(diǎn)就是,代碼預(yù)留了一些功能擴(kuò)展點(diǎn),你可以把新功能代碼,直接插到擴(kuò)展點(diǎn)上,而不需要因?yàn)橐砑右粋€(gè)功能而大動(dòng)干戈,改動(dòng)大量的原始代碼。

靈活性:

如果一段代碼易擴(kuò)展、易復(fù)用或者易用,我們都可以稱(chēng)這段代碼寫(xiě)得比較靈活。

簡(jiǎn)潔性

思從深而行從簡(jiǎn),真正的高手能云淡風(fēng)輕地用最簡(jiǎn)單的方法解決最復(fù)雜的問(wèn)題。這也是一個(gè)編程老手跟編程新手的本質(zhì)區(qū)別之一。

可復(fù)用性:

代碼可復(fù)用性跟DRY(Don’t Repeat Yourself)這條設(shè)計(jì)原則的關(guān)系挺緊密的

可測(cè)試性

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容