《架構之美》閱讀筆記02

2022-08-13 11:12:18 字數 1674 閱讀 7390

首先我看了關於混亂大都市這一節,了解了微觀層面特點沒有統一的概念將不同的部分組織起, **風格不一致控制流無法**,即控制流的流向很複雜,額外的資料快取,其目的讓資料停留在更方便的地方(但是,容易造成資料的不一致性,維護或擴充套件不方便),沒有人了解整個系統,沒有任何文件,巨集觀層面特點,系統沒有彈性,無法變更和新增新功能版本週期過長,低品質的軟體對第三方支援協議,涉及太多內部結構。會出現難以理解的、不容易復現的錯誤。團隊新成員不理解整個系統,不能搞請狀況,流失率高。而造成的惡果的原因:沒有清晰的需求。這個是專案開始之初,團隊就不知道要構建什麼。這個是混亂的乙個重要原因,系統結構難以理解,壞的架構設計只會招致更壞的設計(因為想解決問題,只能選用阻力最小的方法)缺乏內聚,不相關的功能放在一起,沒有清晰的角色定義不必要的耦合。系統沒有最底層,沒有控制中心,所有元件必須一開始就建立。這使得**層次的測試不能進行。沒有共同的**風格,沒有共同的庫,沒有共同的命名習慣。重複的**到處被使用,開發周期過長,造成整個系統測試、迭代困難,軟體質量沒***,這個即使惡果,又是原因之一。而比較成功的設計,往往是乙個持續的過程,不僅僅表現為幾個特徵,如設計之城的各階段的特徵:

在設計早期:

1. 確定了主要的功能領域,並推出初步架構

2. 系統中各獨立部分的位置關係體現為傳統的分層結構。並且,這些是基本的系統設計,可以隨功能模組新增進行擴充套件。

3. 一些基本關注點的決定:

1) 頂層檔案結構

2) 如何對事物命名

3) 內部"展示"風格

4) 共同的編碼慣例

5) 選擇單元測試

6) 一些基礎設施的選擇(如版本控制、系統的構建與持續整合)

第二階段,功能擴充套件:

1. 新**的定位

一開始就有系統結構清晰的總體檢視,所以,新的功能單元可以新增到正確的功能區域,而不是為了一時方便,**隨意新增。(這樣,有的時候開發者的工作會需要動寫腦筋,但是在系統維護和擴充套件時,就變得容易了)

2. 系統的一致性

頂層設計的良好風格和決定,為底層**好處,**是統

一、整潔的。清晰的定義,確保沒有重複的**、介面慣例和常見設計模式被普遍使用、沒有特殊生命週期的物件和資源管理問題。(這個重點是在於減少功能重複)

3. 架構增長

沒有什麼是一層不變的,架構應該是方便擴充套件、可重構的。這樣,**可以快速增長,同時又保持好的內部結構,新增新的功能不是問題。

4. 延遲設計決定

這部分應該是需求問題。yagni(如果不是馬上需要,就不要去做),早期只設計中要的部分,將餘下的決定推遲。特別是,不確定的需求,需要猜測。

5. 保持品質

結對程式設計、對**複審、單元測試。對不正確、不合適的變更都要拒絕。開發者需要對設計負責。

6. 技術債務管理

什麼是技術債務?為了趕時間,對於不太重要的功能被砍掉,允許小的**"瑕疵"存在,發布時避免高風險的改動。這些都應該被標記為技術債務。

應該選擇合適的時間,及時集中清理這些技術債務,在後續版本中修改。

7. 單元測試 打造設計

單元測試在很大程度上定性了**設計,它迫使我們實現好的結構,保證可測性。

8. 遵守設計

新的成員可以比較容易地拿起**開始工作。開發團隊動態地遵守架構設計,專案原則規定沒有人"擁有"某部分設計,而是所有人都應該寫出高品質的**,可以改動系統的所有地方。

未來:1. 沒什麼是一成不變的,在整潔的背景下,突出的技術爭論應該被解決掉。著重於適應性強的架構和靈活的**結構。

《架構之美》閱讀筆記02

1.新 的定位 一開始就有系統結構清晰的總體檢視,所以,新的功能單元可以新增到正確的功能區域,而不是為了一時方便,隨意新增。這樣,有的時候開發者的工作會需要動寫腦筋,但是在系統維護和擴充套件時,就變得容易了 2.系統的一致性 頂層設計的良好風格和決定,為底層 好處,是統 一 整潔的。清晰的定義,確保...

閱讀《架構之美》筆記02

在了解作者之後再說這本書。去架構設計乙個系統的時候,首先考慮的不是這個系統有多少個功能點,而應該是 1.執行在windows還是linux上,選擇的是tomcat還是jetty 2.你想支援的多少併發使用者的請求 3.是構建於內網還是外部易可訪問,需要怎麼樣的安全性要求 4.是吞吐量優先還是要求高響...

架構之美閱讀筆記02

接著讀架構之美,對於這樣的書真是不容易下心去讀,尤其又是在這美好的寒假時光裡。這次看了下第二章,感覺第二章依舊是引入階段,也就是前戲,繼續講述架構。而且指向了有架構可尋的一些好處,我看出來也就是這樣的了。第二章大致是講兩個系統的比較,功能類似,但是結局不同。首先看混亂大都市,沒有統一的概念將不同的部...