1.引言

在開始之前,我想我們有必要先了解以下DDD的主要參與者。因為畢竟語言是人說的嗎,就像我們面向?qū)ο缶幊桃粯?,那通用語言面向的是?
DDD的主要參與者:領(lǐng)域?qū)<?開發(fā)人員
領(lǐng)域?qū)<遥壕I(yè)務的任何人。
開發(fā)人員:開發(fā)+測試。
領(lǐng)域?qū)<疑瞄L某個領(lǐng)域的知識,專注于交付的業(yè)務價值。
開發(fā)人員則注重于技術(shù)實現(xiàn)。
開發(fā)人員總是想著類、接口、方法、設計模式、架構(gòu)等。以面向?qū)ο蟮木幊趟枷脒M行思考,思考如何進行抽象、封裝、繼承、多態(tài)等。而領(lǐng)域?qū)<覍浖械目蚣?、持久化、?shù)據(jù)庫等沒有概念,而這也就導致了他們之間交流的困難性。

那怎么解決交流障礙這個問題呢?

2. 通用語言

拋開DDD而言,單從字面意思來理解,我們首先肯定先聯(lián)想到作為世界使用最多的語言--英語。
英語之所以能成為通用語言,我想無非是以下幾方面:

  • 簡單易學

  • 使用率高

  • 國際通用

那DDD中通用語言又是怎樣呢?
首先它也同樣要擁有【簡單】的特性,這樣才便于理解和傳播。
其次,它也要有【通用】、【使用率高】的特性,因為只有在軟件開發(fā)的過程中,團隊范圍內(nèi)所有的參與人員廣泛使用,才能準確傳遞業(yè)務規(guī)則。

通用語言是團隊交流的基礎上建立起來的,代碼則是基于通用語言來進行業(yè)務表達的。

3. 舉個例子

項目經(jīng)理安排了一項任務給我:
圣杰這個補丁處理下【可銷控制】這個需求。
聽后,真是一臉懵逼,【可銷控制】是什么鬼?

這明顯是專業(yè)術(shù)語,我不懂的專業(yè)術(shù)語。
按照DDD對通用語言的定義,【可銷控制】就不算通用語言。
因為只有領(lǐng)域?qū)<抑浪暮x,開發(fā)人員一臉茫然。

但通用語言是領(lǐng)域?qū)<液烷_發(fā)人員一起創(chuàng)建的,所以我們開個需求會議,來梳理下專業(yè)術(shù)語背后的含義。

可銷控制的應用場景是:
在ERP中,在做單時對銷售員負責的客戶進行范圍控制。比如,A客戶是銷售員小李發(fā)展過來的,小李希望僅能自己負責對A客戶的業(yè)務。

這么一解釋,是不是明白不少了。但是不是還有幾點疑惑?

  • 可銷范圍如何配置?

  • 做什么單據(jù)時進行可銷范圍控制?

  • 如何進行可銷控制?

  • 可銷控制需不需要參數(shù)控制?

經(jīng)過討論,得出以下結(jié)論:

  • 提供專門的【銷售員-客戶可銷控制】界面進行銷售員-客戶映射數(shù)據(jù)配置。

  • 做銷售訂單單據(jù)時進行可銷范圍控制

  • 在錄入銷售員后,做單員在選擇客戶列表時,客戶列表中僅顯示可銷范圍配置的客戶數(shù)據(jù)。

  • 提供【銷售員-客戶可銷范圍控制】系統(tǒng)參數(shù),勾選后才進行可銷范圍控制。

延伸閱讀

學習是年輕人改變自己的最好方式-Java培訓,做最負責任的教育,學習改變命運,軟件學習,再就業(yè),大學生如何就業(yè),幫大學生找到好工作,lphotoshop培訓,電腦培訓,電腦維修培訓,移動軟件開發(fā)培訓,網(wǎng)站設計培訓,網(wǎng)站建設培訓學習是年輕人改變自己的最好方式