在限界上下文之內的每種領域術語,片語或句子,都可以看做通用語言。它們在同乙個上下文中具有唯一確定的含義,在限界上下文之外,它們可能表達不同的含義。所以,我們在確定通用語言時,需要保證它們的含義明確,不模糊。
通用語言是一種團隊共享的語言。領域專家和開發者使用相同的通用語言進行溝通,所以通用語言不是一種業務語言,它也不完全是採用工業標準術語,更加不是一種程式語言。
在程式設計時,我們很容易使得**變成乙個貧血模型,使之丟失很多的業務概念。通常這類**隨著版本迭代,很容易變成難以維護,如果**開發人變更了,新的開發非常困難去理解其中的含義。比如下面的例子。
通用語言:「父親送兒子一套史詩**」
可能描述
業務**
寫**就ok了,管它用啥通用語言呢
children.setpresenter(father);
children.setskin(skin.epic);
兒子得到一套**
好了一點,不過還是丟失了很多概念
children.obtainskin();
父親送兒子一套史詩**
skin skin = skin.epic;
father.presenterskintochilren(children,skin);
從上面的**中我們不難看出,當我們使用通用語言去描述乙個用例並且嚴格按照其進行開發時,我們可以開發出領域專家和開發人員都易懂的**。可能描述一的實現就是典型的貧血模型,在實體中充滿了get/set方法,這樣的get/set方法不具備業務含義,久而久之,我們很容易忘記最初的業務含義。所以我們開發的過程中需要盡量避免這類操作。
關於通用語言這裡有幾點需要澄清。
DDD學習(一) 通用語言
ddd是領域驅動設計 domain driven design 的縮寫,我們需要關注的是為什麼要用它,誰來用它,後面將要學到什麼樣的概念和知識來運用它?英語作為世界通用語言,不論你是哪國人,出國在外會一些基本的英語應該可以與其他國家的人進行交流。同樣,我們如果在領域專家和開發人員之間也能建立一種語言...
如何載入通用語言執行時?
net程式的生成以及執行過程 將源 source code 編譯成為託管模組 managed module 將託管模組組合成程式集 載入clr 執行程式集 一 將源 編譯為託管模組 我們可以用任何支援clr的程式語言來建立源 檔案,然後用相應的編譯器來做語法檢查和源 分析,最終生成託管模組。託管模組...
SQL通用語法 DDL
替換查詢 select id,case when val 2 then 男 else 女 end as 值 from test sys 修改預設字符集和校對規則 為utf 8 alter database test default character set utf8 default collate...