《領域驅動設計:軟體核心複雜性應對之道》讀書筆記
第2章 交流與語言的使用
2.4 文件和圖
圖是一種溝通和解釋手段,它們可以促進頭腦風暴。簡潔的小圖能夠很好地實現這些目標,而涵蓋整個物件模型的綜合性大圖反而失去了溝通或解釋能力,因為它們將讀者淹沒在大量細節之中,加之這些圖也缺乏目的性。鑑於此,我們應避免使用包羅永珍的物件模型圖,甚至不能使用包含所有細節的UML資料儲存庫。相反,應使用簡化的圖,圖中只包含物件模型的重要概念——這些部分對於理解設計至關重要。
設計的重要細節應該在程式碼中體現出來。良好的實現應該是透明的,清楚地展示其背後的模型。
經過仔細選擇和構造的圖可以幫助人們集中注意力,並起到指導作用,當然前提條件是不能強制用圖來表示全部模型或設計,因為這樣會削弱圖的清晰表達的能力。
文件應當鮮活並保持最新。
第8章 突破
重構的投入與回報並非呈線性關係。通常,小的調整會帶來小的回報,小的改進也會積少成多。小改進可防止系統退化,成為避免模型變得陳腐的第一道防線。但是,有些最重要的理解也會突然出現,給整個專案帶來巨大的衝擊。
可以確定的是,專案團隊會積累、消化知識,並將其轉化成模型。微小的重構可能每次只涉及一個物件,在這裡加上一個關聯,在那裡轉移一項職責。然而,一系列微小的重構會逐漸匯聚成深層模型。
一般來說,持續重構讓事物逐步變得有序。程式碼和模型的每一次精化都讓開發人員有了更加清晰的認識。這使得理解上的突破成為可能。之後,一系列快速的改變得到了更符合使用者需要並更加切合實際的模型。其功能性及說明性急速增強,而複雜性卻隨之消失。
第9章 將隱式概念轉變為顯示概念
深層建模聽起來很不錯,但是我們要如何實現它呢?深層模型之所以強大是因為它包含了領域的核心概念和抽象,能夠以簡單靈活的方式表達出基本的使用者活動、問題以及解決方案。深層建模的第一步就是要設法在模型中表達出領域的基本概念。隨後,在不斷消化知識和重構的過程中,實現模型的精化。但是實際上這個過程是從我們識別出某個重要概念並且在模型和設計中把它顯式地表達出來的那個時刻開始的。
若開發人員識別出設計中隱含的某個概念或是在討論中受到啟發而發現一個概念時,就會對領域模型和相應的程式碼進行許多轉換,在模型中加入一個或多個物件或關係,從而將此概念顯式地表達出來。
有時,這種從隱式概念到顯式概念的轉換可能是一次突破,使我們得到一個深層模型。但更多的時候,突破不會馬上到來,而需要我們在模型中顯式表達出許多重要概念,並通過一系列重構不斷地調整物件職責、改變它們與其他物件的關係、甚至多次修改物件名稱,在這之後,突破才會姍姍而來。最後,所有事情都變得清晰了。但是要實現上述過程,必須首先識別出以某種形式存在的隱含概念,無論這些概念有多麼原始。
資料
https://zhuanlan.zhihu.com/c_137428247
https://zhuanlan.zhihu.com/p/32459776
Bounded Context:https://m.aliyun.com/yunqi/articles/59498
相關文章
- 學習《領域驅動設計-軟體核心複雜性應對之道》的過程隨筆
- 領域驅動設計對軟體複雜度的應對複雜度
- 在複雜領域中設計軟體:領域驅動設計 - levelup
- DDD研究十年心得:《複雜軟體設計之道:領域驅動設計全面解析與實戰》出版
- 《簡約之美:軟體設計之道》- 讀書筆記筆記
- 領域驅動設計核心概念
- 《實現領域驅動設計》筆記——架構筆記架構
- 《實現領域驅動設計》筆記——上下文對映圖筆記
- 戲說領域驅動設計(十)——雜談
- 讀書系列-《解構領域驅動》-領域概念
- 《軟體架構設計》讀書筆記架構筆記
- 戲說領域驅動設計(十五)——核心元素
- 《實現領域驅動設計》筆記——領域、子域和限界上下文筆記
- 《程式設計師修煉之道》讀書筆記程式設計師筆記
- 戲說領域驅動設計(十三)——核心架構架構
- DDD領域驅動設計:領域事件事件
- 領域驅動設計對依賴的控制
- 領域驅動設計示例
- MasaFramework -- 領域驅動設計Framework
- 理解領域驅動設計
- 領域驅動設計(DDD)高手養成記
- 軟體開發的22條法則 ——《程式設計師修煉之道》讀書筆記程式設計師筆記
- 領域驅動設計戰術模式--領域事件模式事件
- 戲說領域驅動設計(廿五)——領域事件事件
- 實現領域驅動設計
- 領域驅動設計簡介
- 再談領域驅動設計
- DDD領域驅動設計pdf
- 你應該使用領域驅動設計嗎? - codeopinion
- 戲說領域驅動設計(十六)——實體概念
- 領域驅動設計戰術模式--領域服務模式
- 戲說領域驅動設計(廿一)——領域服務
- 反應式程式設計讀書筆記程式設計筆記
- 前端開發-領域驅動設計前端
- DDD-領域驅動設計示例
- 淺談DDD(領域驅動設計)
- JavaScript中的領域驅動設計JavaScript
- 淺談 DDD 領域驅動設計