軟件構(gòu)建中的設(shè)計

前言

最近在編寫設(shè)計文檔時,參考《代碼大全》,其中有很多觀點(diǎn)值得參考??梢愿鶕?jù)一些設(shè)計點(diǎn)反思自己的設(shè)計是否足夠完善。
看完后,了解到設(shè)計有兩個重點(diǎn):

  1. 設(shè)計越簡單越好
  2. 模塊越清晰,越可分離越好

軟件設(shè)計

作為開發(fā)人員,不應(yīng)該試著一次性將大量程序塞進(jìn)自己的大腦。一個時刻可以專注于一個特定的部分,考慮得才會越精細(xì)、透徹。軟件設(shè)計目標(biāo):將系統(tǒng)分解為多個子系統(tǒng),子系統(tǒng)間相互依賴越少越好。保持子程序的短小精悍有助于減少思考的負(fù)擔(dān)。有句話叫做:程序是給人看的,順便給電腦運(yùn)行的。設(shè)計也是一樣,要設(shè)計出讓人接收起來沒有那么多負(fù)擔(dān)的代碼設(shè)計。

在對模塊進(jìn)行劃分的時候,其實(shí)也是對模塊進(jìn)行抽象的過程。抽象就是用簡化的觀點(diǎn)來考慮復(fù)雜的概念。模塊的內(nèi)部實(shí)現(xiàn)方式不對外公開,外部只需要知道一些接口,即可進(jìn)行交互。
設(shè)計也有多種模塊,比如抽象工廠、適配器、組合等等,可以參考書籍《設(shè)計模式》。

理想的設(shè)計特征

  • 最小的復(fù)雜度。做出簡單而且易于理解的設(shè)計。
  • 易于維護(hù)。設(shè)計出能夠容易閱讀的系統(tǒng)和代碼。
  • 松耦合度。通過抽象、信息隱藏等原則,減少子系統(tǒng)間的關(guān)聯(lián)。關(guān)聯(lián)越少,集成、測試、維護(hù)工作量也會少。
  • 可移植性。方便移植到其他系統(tǒng)。
  • 精簡性。設(shè)計出的代碼,對于要實(shí)現(xiàn)功能,每行代碼都是必需大的,保持閱讀和功能的情況下,代碼量最少。

如何開啟設(shè)計

  • 創(chuàng)建中央控制點(diǎn)。對于每一段有用的代碼,只有一個唯一的地方可以看到它,并可以被控制在模塊中。
  • 為測試而設(shè)計。為了能夠更有效地測試每個模塊內(nèi)容,就容易產(chǎn)生更規(guī)整的接口。
  • 畫一個圖。在更高的抽象模式上表達(dá)問題。
  • 嘗試使用多種設(shè)計方案,嘗試設(shè)計的可能性越多,最終設(shè)計方案越好。

軟件設(shè)計規(guī)則

  • 是否分解得足夠,系統(tǒng)->子系統(tǒng)->組件->子程序。子系統(tǒng)負(fù)責(zé)根據(jù)上層設(shè)計完成詳細(xì)的功能。
  • 程序中不應(yīng)該有環(huán)形關(guān)系。即A依賴B,B依賴C,C又依賴A模塊。環(huán)形模塊會讓系統(tǒng)變得復(fù)雜,難以測試和維護(hù)。
  • 模塊間的交互關(guān)系,是否已經(jīng)設(shè)計為最小化了。
  • 是否有助于最小化偶然性。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

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