DDD中簡單模型比複雜模型更危險
很多人將資料表之間的關係圖或者將類的靜態結構關係作為聚合模型的設計依據,這是片面的。這屬於一種簡單模型,複雜聚合模型是應該考慮這些結構中部件的互動關係的。mathiasverraes這篇文章主要談論這點:
所有模型都是錯誤的,但是簡單模型比複雜模型更錯誤。簡單的模型更具吸引力,更易於教授,傳播和應用。因此,它們可以更快地帶來價值,並且可以更快地造成傷害。“一切都應該儘可能簡單,但不要更簡單。” (愛因斯坦)是個很好的建議,但風險是我們忘記了最後一點。這不是在開玩笑,而是對減單主義的嚴肅警告。
發現還原論
還原論是一種邏輯方法,(Reductionism,相關詞語deductionism演繹法,這個單詞類似歸納法,它是將事物還原拆解成部件 ),它將問題空間視為部件的簡單組合,而忽略了隱藏但必不可少的複雜性(例如,部件之間的關系)。您最終得到的是看似簡單的模型,但實際上是有損模型。(banq注:很多人將資料表之間的關係圖或者將靜態結構關係作為聚合模型的設計依據,這是片面的。)
幸運的是,還原方法通常很容易使用。它以“ [複雜事物]只是[簡單事物]的組成”為開始。歸納成的模型具有“ 5個簡單步驟”或“ 3個祕密”,或諸如EASY之類的便捷助記詞首字母縮寫。
其他型別的簡單模型有:模型會接受隨著時間的變化而改變。他們接受例外作為改進模型的輸入。當異常不適合作為輸入時,這些異常不會被模型丟棄而是會被接受(模型沒有對輸入引數的業務規則校驗)。
如何深化簡單模型
一個簡單的還原論模型可以滿足90%的情況,那麼在10%的情況下,我們需要進行深化工作以找到更好,更豐富,更合適的模型。檢查自己處於標準情況還是例外情況?如果您身邊缺少某些情況,則發出紅旗警告,幫助您選擇正確的方法。
採取腳手架方法,這樣在一開始就能快速進步,將其用作尋找您自己的更好模型的先河,然後擺脫簡單的模型。這種辦法好處:首先沒有重新發明輪子,但最後發現了新穎的解決方案,以解決簡單模型作者無法預見的新穎問題。簡單模型並沒有明確地作為腳手架賣給我們,但是我們可以將其作為腳手架深入化。(腳手架的意思就是利用簡單模型對業務的深入理解,將簡單模型作為我們開始深入的工具,不只是簡單批評然後拋棄它)
通過這兩種辦法,可以將模型變得更加複雜(也就是說,它解決了問題空間中更多的固有複雜性)。複雜的模型雖然不那麼容易出錯,但卻難於培訓教學、傳播和應用!
相關文章
- 貧血模型與充血模型比較 - DDD - The Domain Driven Design模型AI
- 在DDD中建立領域模型模型
- DDD之理解複雜度、尊重複雜度、掌控複雜度複雜度
- OneThink是不是很難做到複雜模型?模型
- 網路模型複雜度計算方法模型複雜度
- 實踐篇 | DDD概念複雜難懂,實際落地如何設計程式碼實現模型?模型
- 【換模型更簡單】如何用 Serverless 一鍵部署 Stable Diffusion?模型Server
- .Net Core Razor引擎 Form複雜模型繫結ORM模型
- 資料複雜性和簡單
- 解決DDD核心的複雜性
- 如何讓我們的模型更簡潔模型
- 運用領域模型——DDD模型
- B-神經網路模型複雜度分析神經網路模型複雜度
- 簡單使用PyTorch搭建GAN模型PyTorch模型
- 針對複雜系統的雙環模型之指南模型
- 貧血模型 - DDD - The Domain Driven Design模型AI
- 為什麼python比c更簡單Python
- 簡單程式的時間複雜度分析時間複雜度
- 從模型複雜度角度來理解過擬合現象模型複雜度
- heygen模型介面 簡單使用 java版模型Java
- 網路 IO 模型簡單介紹模型
- 使用 Laravel Eloquent 構造器讓模型更簡潔Laravel模型
- DDD聚合的數學模型 -Thomas Ploch模型
- OSI模型 與 DOD模型的比較模型
- 複雜性系統隱喻:修剪比砍樹更靈活 - Dave
- 【簡單演算法】什麼是複雜度?演算法複雜度
- AI模型對比AI模型
- 使用 Proxy 實現簡單的 MVVM 模型MVVM模型
- [ kvm ] 四種簡單的網路模型模型
- 2 簡單的計算機模型MARIE計算機模型
- DDD模型探索的Whirl pool設計流程模型
- 高複雜性下的藍芽安全危機藍芽
- 簡單型別與複雜型別及原型鏈型別原型
- 有些人喜歡簡單的事情複雜化
- 領域驅動設計(DDD)中模型的重要性 - Jeronimo模型
- 使用Swift 字典模型互轉 超級簡單Swift模型
- 簡單的介紹 Eloquent 模型生命週期模型
- tensorflow:一個簡單的python訓練儲存模型,java還原模型方法Python模型Java