用函數式語言做領域驅動設計

jopen 11年前發布 | 6K 次閱讀 領域驅動

英文鏈接:Domain-Driven Design Using a Functional Language

  在領域驅動設計 (DDD) 中使用函數式語言 ,在跟業務專家探討時,真正的代碼經常簡單得足以取代各種 UML 圖, Scott Wlaschin 在最近的函數式倫敦群組集會上講到了一個用F#做業務建模和函數式編程的真實案例。

  Scott,一位 .NET 架構師,同時也是掌握函數式編程的 作者,他很欣賞函數式編程,但面向對象的開發人員可能會覺得函數式編程很恐怖,接受不了仿函數、應用型、單子之類所有這些奇怪的專業術語,不過 Scott 宣傳它們確實只是陌生的術語。對于 Scott 來說,面向對象編程的那些概念也很恐怖,比如多態、泛型、繼承、協變等。他認為函數式編程更容易,因為它的概念更少,并且特別強調在他演示的例子中沒用到 這些概念中的任何一個。

  按照 Scott 的經驗,很多開發人員都覺得函數式編程擅于解決數學和科學領域中的問題,但對于現實世界中的普通應用來說太復雜了,但他認為F#真的很適合做那些無聊的業 務類應用程序(BLOBA)的開發;它非常精煉,有很多規避套路化代碼的便利之處,還有一個確保程序正確性的類型系統。

  在領域驅動設計中比較F#和 C# 時,可以看看值對象和實體兩種代碼的例子,Scott 說F#的代碼通常會簡單得多,有時候簡單的都可以用來跟領域專家討論領域模型了,甚至可以直接評審代碼,都不用 UML 圖或者其他模型。

  在介紹F#的類型系統時,Scott 展示了如何把類型和用來做類型檢查的注解變成領域建模工具,并用來呈現設計。因為編譯器會做類型檢查,所以類型系統可以被看作是編譯時的單元測試。

一個優秀的靜態類型系統就像一個編譯時單元測試。

</blockquote>

  Scott 在結論中宣稱F#是函數優先開發中低風險的、安全的選擇,他的主要依據是F#有微軟在后面撐腰。

來自: InfoQ
                    <span id="shareA4" class="fl">                          </span>
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!