领域专用语言实战
每一次我们在白板上设计领域模型,似乎总会在落实到代码的时候于纷杂中走了样。实现模型不管用哪种编程语言来表述,它都已经不是领域专家能理解的业务语言形式。白板上的模型是否精确反映了我们与领域用户商定的需求规格,这也无从让掌握领域规则的人员去验证。
对于这个症结,本书给出的解决之道是采用一种以DSL驱动的应用程序开发模型。假如我们围绕领域用户能够理解的语法和语义设计领域API,那么即使在应用程序代码的开发过程里,用户也能随时检查领域规则实现得是否正确。采用领域语言的代码更容易让人看懂,在这一点上,开发人员、维护人员、只懂业务不懂编程的领域专家都是受益者。
本书除了教你使用DSL来解决问题,还会教你实现DSL。在本书看来,DSL只是在语义模型外面包裹上薄薄一层以语言形态呈现的抽象。语义模型是把握领域核心结构的实现载体,语言层则使用领域用户的专门用语。
本书将使用Ruby、Groovy、Scala、Clojure等现代语言来讲授DSL的设计与实现,针对这些语言所代表的不同编程范式深入讨论它们在DSL设计上的长处和短处。读完本书,你将透彻理解一些必须掌握的概念,能够设计出用户理解且欣赏的优美的领域抽象。
精心设计的DSL旨在向目标用户提供人性化的界面,而做到这一点的最佳途径是让编程模型使用领域专用语言来“说话”。我们一直以来总是把程序设计得像个“黑盒”,很少让业务人员得知其内部细节,这种做法可以休矣。经验告诉我,所有用户都希望查看一下你建模在代码里的业务规则,而不是白板上杂乱的框框和箭头。
嵌在代码里的规则要容易被用户理解,用户必须能看懂你使用的语言,这就是我从事十年领域建模的领悟。当规则可被理解的时候,DSL也就呼之欲出了。随之得到改善的不仅有开发团队和业务人员的沟通效率,还有软件面向用户的表达能力。
对于我们能否为用户提供表现力充沛的语法和语义,实现语言无论何时都是一个决定性的因素。有赖于当今生态环境的巨大发展,我们所设计的语言得以在表现力上有了长足进步。以鼓励开发者编写精炼而富有表现力的代码而论,Ruby、Groovy、Scala和Clojure是先行的表率。在这几种语言下的第一手编程经验让我感觉到,它们的语言风格和表达习惯远比大多数前代语言更适合领域建模。
写这样一本关于DSL的书是很大的挑战。我试图关注DSL的一切现实事物,所以从一开始就设定了具体的领域。当我们渐次展开论述,领域模型随着各种业务需求的累加而变得越来越复杂。这正好充分体现了DSL驱动的开发方式对问题域复杂度增长的适应能力。DSL方式并不是对API设计的颠覆,它只是鼓励你在API的设计思路上多考虑一个维度。请务必记住,你的用户才是DSL的使用者。凡事多从用户的角度去考虑,你一定会成功的!
-
PhpStorm v2020.汉化破解版
phpstorm2020.2是由jetbrains公司推出的一款强大的 PHP 集成开发工具,全称又叫做jetbrains phpstorm2020.2,为用户们提供了实时错误预... 405 0 21-07-07 -
可复制的特殊符号大全
热门符号ღ•⁂€™↑→↓⇝√∞░▲▶◀●☀☁☂☃☄★☆☉☐☑☎☚☛☜☝☞☟☠☢☣☪☮☯☸☹☺☻☼☽☾♔♕♖♗♘♚♛♜♝♞♟♡♨♩♪... 681 0 25-02-20 -
仿微信小程序
界面结构:消息列表: 使用 scroll-view 实现滚动,每条消息使用 view 组件包裹,根据消息类型 (文本、图片、文件) 显示不同内容。输... 988 0 24-11-05 -
jquery-SweetAlert页面提示插件
375 0 21-06-02 -
销售单据 - 企业管理表格
INVIOI CE.DOCPACKING LIST.DOCRPICE LIST.DOC买卖合约书.DOC交货通知单.DOC向推荐人购货订单.DOC售货合同.DOC直接购货订单.DOC订货明... 1167 0 24-07-27 -
html签到领奖
322 0 21-06-02 -
用地图说话 在商业分析与演示中运用Excel数据地图
数据地图是商业分析的高级形式和手段,多见于国外高端商业财经杂志。一直以来,很多职场人士都希望能在自己的数据分析和商务演示中使用数据... 1014 0 24-05-24 -
出差制度,出差管理表 - 企业管理表格
员工出差申请单.doc业务员出差申请单.doc出国申请表.doc出差通知单.doc预支差旅费申请单.doc业务员出差报告表.doc员工出差报告表.doc差旅费... 1103 0 24-07-31
发表我的评论
- 这篇文章还没有收到评论,赶紧来抢沙发吧~