【QCon】精华内容上线92%,全面覆盖“人工智能+”的典型案例!>>> 了解详情
写点什么

从技术上分离业务逻辑: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:56893
用户头像

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

关注

评论

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

数据安全不容忽视,华为云网站安全为企业保驾护航

爱科技的水月

软件供应链端侧安全,小程序安全沙箱技术或许能帮到忙

Geek_99967b

小程序

算法 | 使用栈计算表达式

甜点cc

Go 算法 10月月更

小间距LED显示屏视频拼接器的技术要求

Dylan

LED显示屏 户外LED显示屏 led显示屏厂家

手把手教你成为荣耀开发者:帐号管理这样做

荣耀开发者服务平台

开发者 手机 安卓 荣耀 honor

VLAN原理和配置,交换机创建vlan的多种方法、三种接口模式的作用和配置方法、Access、Trunk、Hybrid接口的特性以及配置方法和命令

Python-派大星

10月月更

百度工程师教你玩转设计模式(适配器模式)

百度Geek说

Java 设计模式 适配器模式 企业号十月 PK 榜

轻量级的隔离技术:安全沙箱

Geek_99967b

小程序

交换机:广播风暴产生原因与解决方法、STP生成树协议 ,根桥(根交换机)、备份根桥、非根交换机、根端口、指定端口、非根非指定端口、桥ID

Python-派大星

10月月更

Java | Scanner关键字、random 关键字、System类和匿名函数

陌上

Java、 编程、 10月月更

2022仪器仪表行业ERP系统十大品牌排行榜

叶落便知秋

ClickHouse 和 Elasticsearch 压测对比,谁才是yyds?

程序知音

9个计算机的“网络层”知识点

华为云开发者联盟

开发 华为云 网络层 企业号十月 PK 榜

「经验汇总」基于TDengine的时序数据解决方案

TDengine

数据库 tdengine 时序数据库

实用性强更安全,后悔没早用华为云

清欢科技

eNSP常用命令 华为模拟器eNSP常用命令

Python-派大星

10月月更

全能型选手——华为云数据库GaussDB(for MySQL)

清欢科技

数十倍的数据量增长,传统 OLAP 还能应对吗?

Kyligence

大数据 金融行业 OLAP技术

二进制之间的加减乘除运算

甜点cc

学习笔记 计算机 二进制 10月月更

Web前端小白知识点

木偶

前端 H5 10月月更

一份阿里内部GC面试手册,仅一周Github获赞96.9K

程序知音

Java JVM Java虚拟机 java架构 后端技术

ClickHouse 冷热分离存储在得物的实践

得物技术

数据库 Clickhouse 存储 日志平台 企业号十月 PK 榜

跟我学Python图像处理丨图像特效处理:毛玻璃、浮雕和油漆特效

华为云开发者联盟

Python 华为云 图像处理 企业号十月 PK 榜

2022机械设备行业ERP系统十大品牌排行榜

叶落便知秋

vscode插件设置——Golang开发环境配置

甜点cc

Go ide vscode 插件 10月月更

Java基础 | 常量、数据类型、变量、类型转换、运算符

陌上

Java、 代码 10月月更

华为云,安全创新的云服务标杆,助力企业数字化转型

爱科技的水月

Java | 面向对象

陌上

Java、 编程、 10月月更

开源时代下,怎样强化自己的应用安全

Geek_99967b

小程序

2022全球主流一体化ERP系统十大品牌排行榜

叶落便知秋

SENSORO 付刘伟:图分析在城市治理服务的应用与落地

SENSORO

智慧城市 图数据库 图数据 数据服务

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