写点什么

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

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

关注

评论

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

尚硅谷&腾讯云EMR实时数仓教程发布

小谷哥

前端高频vue面试题总结

bb_xiaxia1998

Vue

js函数柯里化-面试手写版

helloworld1024fd

JavaScript

JS继承有哪些,你能否手写其中一两种呢?

helloworld1024fd

JavaScript

基于ERNIELayout&pdfplumber-UIE的多方案学术论文信息抽取

汀丶人工智能

nlp 信息抽取 2022年终总结 2023新展望

如何通过C#/VB.NET将格式应用于 Word 中的字符

在下毛毛雨

C# .net word文档 字符格式

一种多维数据库的数据事务专利解读

元年技术洞察

数据中台 数字化转型 专利解析 多维数据库

注意这八个容易损坏LED显示屏的情况

Dylan

LED显示屏 全彩LED显示屏 led显示屏厂家

腾讯前端二面高频手写面试题总结

helloworld1024fd

JavaScript

技术管理 之 跨功能需求管理

码猿外

技术管理 非功能性需求 跨功能性需求

ARM 算子性能优化上手指南

MegEngineBot

深度学习 开源 性能优化 MegEngine

前端一面常考react面试题

beifeng1996

React

如何在Java程序中合并和拆分Excel文档

Geek_249eec

Java Excel 工作表

ChatGPT的一小步,NLP范式转变的一大步

OneFlow

人工智能 深度学习

2023我的前端面试小结

loveX001

JavaScript

深圳大数据培训机构怎么选

小谷哥

React的useLayoutEffect和useEffect执行时机有什么不同

beifeng1996

React

前端二面手写面试题总结

helloworld1024fd

JavaScript

阿里云前端专家冯军:前端用户体验该如何优化

云布道师

阿里云

OpenHarmony系统使用gdb调试init

OpenHarmony开发者

openha

React循环DOM时为什么需要添加key

beifeng1996

React

假如问:你是怎样优化Vue项目的,该怎么回答

bb_xiaxia1998

Vue

校招前端一面必会vue面试题指南

bb_xiaxia1998

Vue

前端培训机构如何学习开发技术

小谷哥

Rancher RFO 正式 GA

openEuler

Linux 开源 Kubernetes 操作系统 rancher

功能上新|一键归因分析,快速洞察指标波动原因

Kyligence

指标中台 归因分析

海量数据同步首选 SeaTunnel Zeta 引擎正式发布!

Apache SeaTunnel

大数据 开源 apache 社区 Apache SeaTunnel 数据集成平台

web前端技术应该怎么规划学习?

小谷哥

校招前端二面常考react面试题(边面边更)

beifeng1996

React

2022年是最烂的一年吗?我的2022年终总结

Zhendong

总结 年终总结 2022年终总结

ZooKeeper 避坑实践:SnapCount 设置不合理导致磁盘爆满,服务不可用

阿里巴巴云原生

zookeeper 阿里云 云原生

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