.NET架构师:函数式语言做领域驱动设计

日期: 2014-05-15 来源:TechTarget中国 英文

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

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

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

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

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

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

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

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

相关推荐

  • 领域驱动设计实现之路

    在DDD中,代码就是设计本身,你不再需要那些繁文缛节的并且永远也无法得到实时更新的设计文档。编码者与领域专家再也不需要翻译才能理解对方所表达的意思。

  • 驱动方法不能改变任何事情

    我们期待驱动方法具有某种魔力,是因为我们喜欢框架。我们常常忘了对于我们的技能,它们只是扮演支撑角色,而不是软件专业的唯一目标。

  • 软件开发就像炒股 关键看你怎么选股票!

    本文作者Paulo Ortins在这里分享了对于选择哪种编程语言作为软件开发工作的起点的话题,并阐述了自己的观点。

  • 增进离岸Java开发效率的十个提示

    近日,Cygnet Infotech公司发布了一篇博文,谈到了如何增进离岸Java开发的效率。众多的ISV与软件厂商总是在不断寻找能以最低的代价实现其业务目标的解决方案。