軟件工程:工程師必知的8條設(shè)計(jì)原則
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
軟件工程是一門涉及到設(shè)計(jì)、開發(fā)、測(cè)試和維護(hù)軟件的實(shí)踐性學(xué)科。 軟件工程的目標(biāo)是提高軟件的質(zhì)量、效率和可靠性,以滿足用戶的需求和預(yù)期。 為了實(shí)現(xiàn)這個(gè)目標(biāo),軟件工程師需要遵循一些基本原則,指導(dǎo)他們?cè)谲浖_發(fā)過程中做出合理的決策。 這些原則可以稱為軟件工程的黃金原則,因?yàn)樗鼈兙哂幸欢ㄆ毡樾院椭笇?dǎo)性。 在過去的一段時(shí)間內(nèi),我們分享了8個(gè)常見設(shè)計(jì)原則,今天做一個(gè)總體性的總結(jié)。 具體內(nèi)容如下: 1單一職責(zé)原則(SRP)單一職責(zé)原則是指在軟件系統(tǒng)中,一個(gè)模塊或一個(gè)類應(yīng)該只負(fù)責(zé)一個(gè)職責(zé)或一個(gè)功能。 這個(gè)原則可以提高軟件系統(tǒng)的內(nèi)聚性和可讀性,降低軟件系統(tǒng)的耦合度和復(fù)雜度。 單一職責(zé)原則要求一個(gè)模塊或一個(gè)類在完成其職責(zé)或功能時(shí),不會(huì)影響或依賴其他模塊或類。 實(shí)現(xiàn)單一職責(zé)原則的方法有很多,比如使用分解、封裝、委托、代理等。 2開放封閉原則(OCP)開放封閉原則是指在軟件系統(tǒng)中,一個(gè)模塊應(yīng)該對(duì)擴(kuò)展開放,對(duì)修改封閉。 這個(gè)原則可以提高軟件系統(tǒng)的可復(fù)用性和可維護(hù)性,適應(yīng)需求的變化和用戶的需求。 開放封閉原則要求一個(gè)模塊在不修改其內(nèi)部代碼的情況下,可以通過擴(kuò)展其功能來(lái)滿足新的需求。 實(shí)現(xiàn)開放封閉原則的方法有很多,比如使用抽象、接口、繼承、多態(tài)、插件、鉤子等。 具體見:軟件工程:開放封閉原則(OCP) 3里氏替換原則(LSP)里氏替換原則是指在軟件系統(tǒng)中,如果一個(gè)類是另一個(gè)類的子類,那么子類的對(duì)象可以替換父類的對(duì)象,并且不會(huì)改變?cè)械墓δ芎驼_性。 這個(gè)原則可以保證軟件系統(tǒng)的一致性和完整性,遵循面向?qū)ο蟮脑O(shè)計(jì)原則。 里氏替換原則是繼承關(guān)系的基礎(chǔ),也是多態(tài)的前提。 實(shí)現(xiàn)里氏替換原則的方法有很多,比如使用抽象、覆蓋、重載、協(xié)變、逆變等。 具體見:軟件工程:里氏替換原則(LSP) 4KISS原則KISS原則是Keep It Simple, Stupid的縮寫,意思是保持簡(jiǎn)單。 這個(gè)原則強(qiáng)調(diào)要盡量使用簡(jiǎn)單和直觀的方法來(lái)解決問題,避免使用復(fù)雜和晦澀的方法。 這樣可以提高代碼的可理解性、可測(cè)試性和可修改性,也可以減少出錯(cuò)的風(fēng)險(xiǎn)和調(diào)試的難度。 KISS原則可以應(yīng)用在不同的方面上,比如需求分析、設(shè)計(jì)方案、編碼風(fēng)格、算法選擇等。 實(shí)現(xiàn)KISS原則的方法有很多,比如使用偽代碼、注釋、文檔、重構(gòu)等。 具體見:軟件工程:Kiss原則,復(fù)雜事情簡(jiǎn)單做,是重要的能力 5合成復(fù)用原則合成復(fù)用原則是指在軟件系統(tǒng)中,應(yīng)該盡量使用組合或聚合來(lái)實(shí)現(xiàn)復(fù)用,而不是使用繼承。 這個(gè)原則可以提高軟件系統(tǒng)的靈活性和可擴(kuò)展性,降低類之間的耦合度和層次復(fù)雜度。 組合或聚合是指一個(gè)類包含或引用另一個(gè)類作為其屬性或成員變量,而繼承是指一個(gè)類從另一個(gè)類派生出來(lái),并繼承其屬性和方法。 實(shí)現(xiàn)合成復(fù)用原則的方法有很多,比如使用委托、策略模式、裝飾器模式等。 具體見:軟件工程:合成復(fù)用原則,組合優(yōu)于繼承 6依賴穩(wěn)定原則依賴穩(wěn)定原則是指在軟件系統(tǒng)中,穩(wěn)定的模塊應(yīng)該依賴于其他穩(wěn)定的模塊,而不穩(wěn)定的模塊應(yīng)該依賴于其他不穩(wěn)定的模塊。 這個(gè)原則可以保證軟件系統(tǒng)的穩(wěn)定性和可靠性,減少因?yàn)橐蕾囮P(guān)系而導(dǎo)致的錯(cuò)誤和變更。 穩(wěn)定性可以從多個(gè)方面來(lái)衡量,比如變化頻率、抽象程度、耦合度等。 實(shí)現(xiàn)依賴穩(wěn)定原則的方法有很多,比如使用接口、抽象類、依賴注入(DI)、控制反轉(zhuǎn)(IoC)等。 具體見:軟件工程:依賴穩(wěn)定原則 7DRY原則DRY原則是Don't Repeat Yourself的縮寫,意思在編寫代碼時(shí),避免添加不必要的功能或復(fù)雜性。 這個(gè)原則強(qiáng)調(diào)要避免代碼的冗余和重復(fù),盡量復(fù)用已有的代碼,減少代碼的數(shù)量和復(fù)雜度。 這樣可以提高代碼的可讀性、可維護(hù)性和可擴(kuò)展性,也可以減少出錯(cuò)的可能性和修改的成本。 DRY原則可以應(yīng)用在不同的層次上,比如變量、函數(shù)、類、模塊等。 實(shí)現(xiàn)DRY原則的方法有很多,比如使用抽象、封裝、繼承、多態(tài)、模板、泛型等。 8YAGNI原則YAGNI原則是You Ain't Gonna Need It的縮寫,意思是你不會(huì)需要它。 這個(gè)原則強(qiáng)調(diào)要避免過度設(shè)計(jì)和過度編碼,只實(shí)現(xiàn)當(dāng)前需求所必須的功能,不要預(yù)測(cè)未來(lái)可能需要的功能。 這樣可以避免浪費(fèi)時(shí)間和資源在不必要或不確定的功能上,也可以避免增加代碼的復(fù)雜度和難以維護(hù)。 YAGNI原則可以幫助軟件工程師保持敏捷和靈活,適應(yīng)需求的變化和用戶的反饋。 實(shí)現(xiàn)YAGNI原則的方法有很多,比如使用迭代開發(fā)、最小可行產(chǎn)品(MVP)、測(cè)試驅(qū)動(dòng)開發(fā)(TDD)等。 具體見:軟件工程:YAGNI原則,不對(duì)未來(lái)做太多的假設(shè) Part1最后以上是在工程實(shí)踐中,比較重要的8個(gè)指導(dǎo)性的基礎(chǔ)原則。 一名合格的軟件工程師,需要了解和掌握這些基本的設(shè)計(jì)原則,并學(xué)會(huì)結(jié)合具體的場(chǎng)景需求,做出有效且靈活的應(yīng)用。 能夠更好的解決軟件開發(fā)中的面臨的復(fù)雜問題,且能夠做出高質(zhì)量的設(shè)計(jì)和決策,最終交付更多的優(yōu)秀的產(chǎn)品和創(chuàng)造更多的價(jià)值。 該文章在 2023/7/12 9:00:12 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |