关于本书
每一次我们在白板上设计领域模型,似乎总会在落实到代码的时候于纷杂中走了样。实现模型不管用哪种编程语言来表述,它都已经不是领域专家能理解的业务语言形式。白板上的模型是否精确反映了我们与领域用户商定的需求规格,这也无从让掌握领域规则的人员去验证。
对于这个症结,本书给出的解决之道是采用一种以DSL驱动的应用程序开发模型。假如我们围绕领域用户能够理解的语法和语义设计领域API,那么即使在应用程序代码的开发过程里,用户也能随时检查领域规则实现得是否正确。采用领域语言的代码更容易让人看懂,在这一点上,开发人员、维护人员、只懂业务不懂编程的领域专家都是受益者。
本书除了教你使用DSL来解决问题,还会教你实现DSL。在本书看来,DSL只是在语义模型外面包裹上薄薄一层以语言形态呈现的抽象。语义模型是把握领域核心结构的实现载体,语言层则使用领域用户的专门用语。
本书将使用Ruby、Groovy、Scala、Clojure等现代语言来讲授DSL的设计与实现,针对这些语言所代表的不同编程范式深入讨论它们在DSL设计上的长处和短处。读完本书,你将透彻理解一些必须掌握的概念,能够设计出用户理解且欣赏的优美的领域抽象。