BT

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

从技术上分离业务逻辑:Kathleen Dollard对于代码生成的新观点

| 作者 Sadek Drobi 关注 0 他的粉丝 ,译者 朱永光 关注 0 他的粉丝 发布于 2008年1月1日. 估计阅读时间: 3 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

从用户界面代码中分离业务逻辑是老一辈VB程序员教给我们的重要一课。Kathleen Dollard实际上主张业务逻辑应该从任何技术中分离出来,以避免当新技术到来之时重写所有代码。并且,根据Kathleen Dollard的说法,代码就是技术,那么业务知识必须独立存在:

把业务逻辑和任何技术结合在一起注定让我们在获得新技术时要从基础部分重写代码——代码就是技术。

...你不能把代码和业务逻辑结合在一起。

任何闪亮漂亮的小工具和语言都会成为明天的老古董。

业务知识宁可保存在这些地方:“数据库结构、服务契约、测试定义、业务规则、工作流、业务对象编码、验证规则、授权准则、用户界面等等。”然而,人们可能会争辩到,无论我们选择了那个地方来隔离业务信息,它总是基于某项技术——这项技术总是会被改变的。虽然如此,在使用代码“作为表达意图的核心方式”和使用给定语法保存意图的表现之间总是存在一个关键的不同点的

你可以对这些声明识别、分类和确定形态。确实,任何声明的语法都是基于某个以此为目标的技术。...但是,任何元数据所含的价值都可以被转化为其他任何元数据语法。

Kathleen主张的这种方法是,把代码生成作为从代码中提取和分离业务逻辑的一种手段。根据他的实践,她提出“即使最好的常规开发成果都会比平平常常的代码生成开发要差一些”。大部分专业团队使用敏捷方法也能按时成功交付有质量保证的软件,但在Kathleen Dolard的眼里,这样也可能会失败因为“整件事将随着新技术而重新开始。” 

在生成的系统中需要着重强调的一点是,代码依旧扮演着一个决定性的角色。 无法定位错误就是80年代中4GL(译者注:4th Generation Lanuage,第四代语言)灾难的一个原因。生成的代码可以避免这些易犯的错误,因为它实际上是“系统告诉你如何做”,这对于调试而言完全是具有决定性的。因此,Kathleen把代码描述为“必要的邪恶”并认为确实应该这样对待代码生成。 

她强调,这种方式对我们设想中的编程需要一个基本的转变,有效的领导力及适合工具将使代码生成完成的更好。Kathleen论证到,如今“.NET不是一个通过技术的变革来保护你的项目的接种疫苗”。它实际上加速了变革的步骤。然而,已经存在一些广泛使用代码生成的前提条件了。 

在提及用于映射元数据或XML文本的实体框架的时候,Kathleen Dollard说,他们“能让代码生成做令人吃惊的事情”以及具有“代替XSLT用于复杂生成功能”的潜力。Kathleen希望代码生成这个领域在接下来的几年变得更有活力。她相信,基于“一种代码生成的组合方式,无声地为我们编写我们本来需要编写的代码”,可以让我们更接近正确的开发方式。 

查看英文原文:Separating business logic from technology: Kathleen Dollard on a new view of code generation

评价本文

专业度
风格

您好,朋友!

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

获得来自InfoQ的更多体验。

告诉我们您的想法

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

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

是好是坏? by B Necromancer

作者是讲把业务逻辑用元数据形式来表达,再用code generator生成代码?

要是用元数据形式表达,那我们岂不要维护一组非常复杂的解析引擎。依旧“强引擎,弱脚本”。

hh by xia Charlie

ghuihjk

元数据本身用什么来描述? by 曹 云飞

用XML?比用代码更丑陋。代码本身就是一种语言。数据库结构、服务契约、测试定义、业务规则、工作流、业务对象编码、验证规则、授权准则、用户界面,这些东东怎么描述呢,归根到底总要用某种语言来描述,可以不是代码,但是必然是某种语言。那么那种语言是否比代码更高效,更容易维护?最根本的问题是,代码和语言有什么本质区别?

Re: 元数据本身用什么来描述? by Chu Kevin

作者的本意是把业务规则保存为通用的元数据,不用和具体代码绑定,之后根据技术的更替,可以通过代码生成再次生成具体的代码。
但是确实存在要维护一套复杂的元数据的问题。老实说,作者的这种主张是基于她的实践的,我并没有这样实践过,所以无法判定她这样方式的优劣。不过确实可以给我们提供一种参考,一种解决技术和业务之间问题的思路。

做起来难 by Alex wang

说的好像比较容易,但做起来很难。。

允许的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通知我

5 讨论

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


找回密码....

Follow

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

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

Like

内容自由定制

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

Notifications

获取更新

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

BT