最近一直在關注領域驅動設計的方法學問題,說實話,這些理論的東西實踐起來的确還是很困難,原因
是多方面的,第一:領域驅動設計要求開發設計人員與業務專家一起進行頭腦風暴,進而建立起領域模
型來,而這個過程是貫穿軟體開發的整個生命周期的,因為領域模型不是一開始就完全建立起來的,而
且開始的模型也可能會随着項目的進行而不斷深化變換,這就要求業務專家必須和開發設計人員共同長
期的進行這項活動,是以這一點比較比較困難;第二、領域驅動設計的方法是完全面向對象的思想方法
,與傳統的面向過程(也可以說是面向方法)的開發方法有比較大的差異,面向過程開發是将業務邏輯
都在方法裡面按照順序一二三的進行書寫,比較集中,領域設計要求将業務邏輯分散到領域模型中去,
降低維護時關注的複雜度。雖然目前很多人都使用面向對象的語言來進行開發,但是他們卻是拿着面向
對象的語言進行着面向過程的開發,這種開發方法要求開發人員有較好的面向對象設計開發的能力,對
經驗也有一定的要求,需要整個團隊的開發人員的技術有一個較高的水準,估計在國内來看,絕大大多
數項目組還是做不到這個要求,因為很多項目中會安排新手來進行編碼工作,他們不太重視編碼這個環
節,認為是代碼民工做的事情,其實不然,這個環節與軟體最終出來的品質有相當大的關系。 第三:
該設計方法要求整個項目組都必須集中在同一領域模型的關注點上,必須對其進行精煉濃縮,必須保持
模型的高度一緻,如果不然,出現了多套模型,那必然将項目失敗的可能性提高到了數個數量級。
是以啊,用與不用,還是有點難于決策啊,我的觀點是:過程與領域設計結合,各取所長,來個混血兒
未必不是一個好辦法,項目簡單,大可采用過程的設計開發方法,如果稍微複雜,那麼則可進行提煉重
構采用領域模型來實作複雜的部分,簡單的部分仍然不用理會,呵呵,自家之言,有誤就斧正!