写点什么

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

  • 2007-12-31
  • 本文字数:1117 字

    阅读完需:约 4 分钟

从用户界面代码中分离业务逻辑是老一辈 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

2007-12-31 09:56930
用户头像

发布了 254 篇内容, 共 54.5 次阅读, 收获喜欢 2 次。

关注

评论

发布
暂无评论
发现更多内容

Java开发之命名规范

@零度

Java 命名规范

12月17日技术大咖云集,云智技术论坛“年度收官”聚焦知识智能化

百度大脑

人工智能

从4K到8K,谁才是开启8K时代的钥匙?

郑州埃文科技

数据库 IP 8k

VUEX的store用法

CRMEB

【北京讲座报名!】12月26日与深度学习大牛共赋技术之约!

亚马逊云科技 (Amazon Web Services)

人工智能 深度学习 活动 ML

为什么我不怎么用调试器

Justin

软件开发 28天写作 调试工具

Flink Sql Gateway的原理与实践

安第斯智能云

数据库 sql

CurveFS预览版重磅首发,Curve加速迈向云原生软件定义存储

网易数帆

GitHub

Kafka-Broker的基本模块

编程江湖

大数据

10个常见的前端手写功能,你全都会吗?

CRMEB

Android C++系列:Linux Socket编程(四)多路IO转接服务器

轻口味

28天写作 12月日更

从直播硬件出发,浅析直播技术到物联网设备的智能化趋势

阿里云视频云

阿里云 物联网 直播 直播技术 视频云

微服务架构 | 如何优化日志链路追踪输出SQL的执行效率?

码农架构

微服务架构 链路追踪 SpringCloud

飞桨企业版重磅发布智能边缘控制台,5分钟零代码自动化模型部署

百度大脑

人工智能

什么是反序列化?反序列化的过程,原理

网络安全学海

黑客 网络安全 信息安全 渗透测试 反序列化

国内首次Feature Store Meetup回顾

第四范式开发者社区

机器学习 第四范式 OpenMLDB 特征平台

一文搞懂TopK问题

bigsai

数据结构 算法

压测大师链路监控服务开放免费体验预约

WeTest

MySQL从入门到入魔(01)

海拥(haiyong.site)

MySQL 入门 28天写作 12月日更

网络安全产品之堡垒机应用于教育行业案例讲解

行云管家

网络安全 教育 等保 等级保护

CRM报告如何改变您的业务

低代码小观

低代码 企业管理 CRM 企业管理系统 CRM系统

Hybris commerce产品主数据的搜索API,批量返回若干主数据的值

Jerry Wang

28天写作 SAP 12月日更

管控一体化 | IM即时通讯构建企业协同生态链

WorkPlus

30个类手写Spring核心原理之自定义ORM(上)(6)

Tom弹架构

Java spring 源码

dart系列之:dart优秀的秘诀-隔离机制

程序那些事

flutter dart 程序那些事 12月日更 flutter for web

阿里云李克:边缘云技术发展与实践

阿里云Edge Plus

CDN 边缘计算 CDN加速

数百名专家政要出席阿联酋区块链大会“DCS 2021 ” 虎符受邀亮相

区块链前沿News

Hoo 虎符交易所 区块链峰会 DCS 2021 全球分布式云存储峰会

Linux一学就会之Linux系统启动原理及故障排除

学神来啦

Linux 运维 黑客 linux运维 linux云计算

十一月热点:BML预置模型调参添新利器;EasyDL图像分类上线免训练极速迭代模式

百度大脑

人工智能

LevelDB封装和功能拓展

FunTester

数据库 测试框架 测试开发 leveldb FunTester

1. 编译原理概览

书旅

Go 后端 编译原理 源码剖析

从技术上分离业务逻辑:Kathleen Dollard对于代码生成的新观点_.NET_Sadek Drobi_InfoQ精选文章