BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

用函数式语言做领域驱动设计

| 作者 Jan Stenberg 关注 29 他的粉丝 ,译者 吴海星 关注 0 他的粉丝 发布于 2014年3月27日. 估计阅读时间: 2 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

领域驱动设计 (DDD) 中使用函数式语言 ,在跟业务专家探讨时,真正的代码经常简单得足以取代各种UML图, Scott Wlaschin 在最近的函数式伦敦群组集会上讲到了一个用F#做业务建模和函数式编程的真实案例。

Scott,一位.NET架构师,同时也是掌握函数式编程的作者,他很欣赏函数式编程,但面向对象的开发人员可能会觉得函数式编程很恐怖,接受不了仿函数、应用型、单子之类所有这些奇怪的专业术语,不过Scott宣传它们确实只是陌生的术语。对于Scott来说,面向对象编程的那些概念也很恐怖,比如多态、泛型、继承、协变等。他认为函数式编程更容易,因为它的概念更少,并且特别强调在他演示的例子中没用到这些概念中的任何一个。

按照Scott的经验,很多开发人员都觉得函数式编程擅于解决数学和科学领域中的问题,但对于现实世界中的普通应用来说太复杂了,但他认为F#真的很适合做那些无聊的业务类应用程序(BLOBA)的开发;它非常精炼,有很多规避套路化代码的便利之处,还有一个确保程序正确性的类型系统。

在领域驱动设计中比较F#和C#时,可以看看值对象和实体两种代码的例子,Scott说F#的代码通常会简单得多,有时候简单的都可以用来跟领域专家讨论领域模型了,甚至可以直接评审代码,都不用UML图或者其他模型。

在介绍F#的类型系统时,Scott展示了如何把类型和用来做类型检查的注解变成领域建模工具,并用来呈现设计。因为编译器会做类型检查,所以类型系统可以被看作是编译时的单元测试。

一个优秀的静态类型系统就像一个编译时单元测试。

Scott在结论中宣称F#是函数优先开发中低风险的、安全的选择,他的主要依据是F#有微软在后面撑腰。

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

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

?? by Chen YuGuo

案例呢?

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

1 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT