DDD設計何時適可而止?
無論是敏捷和瀑布,軟體開發都有一個設計過程,實際也是瞭解知識準備過程,屬於坐而論道,那麼什麼時候動手開幹?
1. 首先,動手開乾的標誌是什麼?見這篇文章:
按技術職責還是按領域職責來構建程式碼?
文章裡談了程式碼如何組織包模組,也就是com.jdon.XXX的設計,這個XXX設計不是拍腦袋想出來的,而是基於你對領域的理解,如果你對業務領域不理解,你會直覺按照技術職責劃分,或者按照團隊劃分,如果你業務領域理解了,那麼會按照領域職責劃分。
2. 那麼理解業務領域的標誌是什麼?見這篇文章:
如何實現軟體設計中的高凝聚和松耦合?
你如果能找出業務領域的高內聚和低耦合的劃分,基本說明你已經對業務領域理解了,那麼com.jdon.XXXX的包層次結構就大概出來,可以分工開幹了。
3. 但是,關鍵是在內聚和耦合了,這個問題是否好解決呢?
不一定,因為這取決於上下文環境:
遠看一隻虎,近看一條狗!
沒有上下文的資料就是噪音! 上下文為王
這是資料科學領域的格言,那麼同樣適合在人對世界的認知中。
高聚合和低關聯是依據上下文不同而不同的,也就是根據上下文環境做判斷的,這是難點,因為如果你沒有發現上下文的相關性,如同上圖中,你沒有發現鐵柵欄投影到狗身上引起的條紋,這個上下文因素忽視了,那麼內聚模型就建模建錯了。
4. 那麼到這裡有什麼訣竅嗎?如果有,機器學習就戰勝人類了,變成通用人工智慧了。
所以,這就到藝術邊緣,能子領域能聚合在一起就好了,單一功能職責劃在一起就可以了,不必精益求精,因為已經到了藝術地步,不屬於數學,再死磕就過了。
而且靈感不是死磕中出現,而是少做並學習後才出現:
程式設計師應該少做些"工作"
5. 好了,我們也死磕到此為止,話題一轉,回到按照領域職責劃分上:
com.jdon.xxxx.xxx.xxx.xxx的子包出來後,團隊就要對齊這個領域劃分包,每個團隊承包一個子包,這就是:
DDD與團隊拓撲以及微服務之間的關係圖
6. 最後,再次提醒:
相關文章
- 微博和B站遮蔽馬保國相關資訊:自媒體蹭熱度要適可而止
- 前端程式設計師的焦慮感從何而來?前端程式設計師
- 何時使用領域驅動設計
- 遊戲為何而難? 談談遊戲的難度設計遊戲
- 為何而跑?
- DDD聚合設計原則
- 領域驅動設計的DDD與ddd - nick
- 何時停止設計並啟動實施程式設計? - Alter程式設計
- ddd-crew/ddd-starter-modelling-process:DDD設計入門建模流程
- 可程式設計作息時間控制器設計程式設計
- DDD領域設計概念梳理
- DDD聚合五種設計方法
- DDD設計模式結構圖設計模式
- SIE VP 專訪:PS5 的 UI 設計靈感從何而來?UI
- DDD之1微服務設計為什麼選擇DDD微服務
- DDD領域驅動設計pdf
- 專為資料時代而設計 Dell EMC PowerStore來了
- Mysql可重複讀(1) —— 快照何時建立MySql
- DDD-領域驅動設計示例
- DDD模型探索的Whirl pool設計流程模型
- 淺談DDD(領域驅動設計)
- 淺談 DDD 領域驅動設計
- DDD領域驅動設計:倉儲
- 何時適合進行自動化測試?(下)
- 何時適合進行自動化測試?(上)
- 資料中臺從何而來
- 併發程式設計——如何終止執行緒程式設計執行緒
- 邊緣計算和5G:我們從何而來?
- 什麼是DDD領域驅動設計的戰略設計?
- 什麼是DDD領域驅動設計的戰術設計?
- dayatang/dddlib:DDD領域驅動設計庫
- DDD-領域驅動設計簡談
- 領域驅動設計(DDD)入門&概要
- 領域驅動設計 (DDD) 簡介 - jannikwempe
- DDD領域驅動設計:領域事件事件
- 可持續IT報告:為何可持續綠色IT革命時機已到?
- 雲原生2.0時代,保險企業為何要迎智而上?
- 可落地的DDD程式碼實踐