DDD被高估 | Stefan Tilkov

banq發表於2021-03-02

領域驅動設計(DDD)最近變得越來越流行,新書,會議演講(甚至是專門針對它的完整會議)以及許多培訓,從模式語言的最佳意義上講,DDD為許多開發人員和設計人員在如何設計這件事情上給出了一個明確的名稱,過去他們是無法可靠地、相容地進行溝通。
但是,我對最近的事實也感到惱火,似乎每當有人談論如何設計系統或服務邊界,甚至只是提到非技術設計時,每個人都會被迫引進DDD專家:就像他們是唯一可以設計任何東西的超級英雄。這與您盲目地應用當前正在流行的解決方案的任何其他情況一樣糟糕,這僅僅是因為這是每個人都在談論的事情,而不是因為它是適合該工作的正確解決方案。DDD很棒,但是它只是您應該瞭解的許多工具和技術之一。
我認為人們還缺少一個更重要的方面,特別是當他們入門DDD時。DDD強調命名的重要性,它建議您在設計的上下文中爭取一種通用的無所不在的語言。但是對於我們的領域(設計系統領域),它也有自己的語言。
DDD只是眾多語言中一種可能的設計語言。將值稱為值物件很有價值,促進溝通。但是,現有的、常見的DDD概念並不是您唯一應該考慮的概念,它們只是設計和架構系統的一個非常普遍特徵的示例:提出並認識到模式,給他們起好名字,並使用它們來賦予系統結構和完整性。
如果在您自己的體系結構中,存在一種常見的模式,例如您使用過濾器將請求路由到處理程式,或者由代理處理的文件概念,這種現象可能一次又一次地發生在與“服務”或“倉儲”相同的級別上,最終這種模式對您來說變得越來越重要。在我看來,我們可以並且應該發明自己的語言的概念,這比許多幼稚的DDD從業者認為的更為重要。如果您要做的只是按書定義應用現有DDD術語,並嘗試要將任何問題塞入這個現有結構中,您將是一個非常可悲的設計師。
超越DDD!並非每個好的設計都需要由領域驅動(儘管我可以接受,它應該始終由域驅動,只是不一定在DDD的意義上)。即使您不是DDD專家,也可以設計好的系統。
 
網友討論:
我不同意您的文章,或至少不同意的一些前提,我認為DDD詞彙需要專家或專業知識,這意味著即使使用DDD語言也是一種“把關理論(gatekeeping theory)”。

DDD語言是一種真正意義上的模式語言,旨在將業務領域民主化(普及化),這與Alexander's旨在使架構民主化的方式相同。它是一種小巧易學的詞彙,使發燒友可以進行交流。
 
術語不只是把關理論,而是關於精確度和不斷變化的思維方式:使您以嶄新的眼光看到事物。戴夫·斯諾登(Dave Snowden)也積極地這樣做,因為語言具有很強的形成性。
 
我遇到了一些人(通常是高階架構師),他們往往使用“錯誤” DDD術語。我傾向於不太和那些人閒扯,看門人終會把關,無論是使用DDD術語還是使用其他語言表達相同意思的勢利者。
 
目標是大家達成共識,通常涉及有人說“我不知道這意味著什麼”或“我以前從未聽過該詞”之類的事情。當然,批評人們沒有正確使用DDD術語會損害您進行有效探索所需的心理安全。
 
作為哲學迷,我喜歡擰一下這些人的鼻子-“恭喜!您如果在1953年就追上了維特根斯坦……”
 
一條推文的DDD:
  1. 同一工作或同一領域的人使用相似的詞。與他們合作找到他們使用的術語行話。
  2. 不同的領域使用不同的詞語。這些詞語僅在自己的上下文中有效。
  3. 與領域中的單詞詞語保持一致。
  4. 確定上下文邊界。


 

相關文章