写点什么

临时代码、可持续代码以及二者之间的一切

  • 2010-03-25
  • 本文字数:1122 字

    阅读完需:约 4 分钟

有些代码经过良好的测试和重构,而且要长久存在下去。有些代码打算在几天内就抛弃掉。在这两个极端之间,有很多灰色地带。人们在开发处于灰色地带的代码时,打算稍后做清理,却从未完成。

William Pietri 从开发人员和业务人员的两个角度,分析了代码的相关成本。在 William 看来,代码可以分为 3 种类别:

  • 临时的——开发的代码打算在短时间内抛弃掉。
  • 可持续的——打算长久存在的代码,经过团队的良好重构和理解,还经过有力的单元测试,并且易于维护。
  • 半途而废的——一切都没有完成。临时的快速修复从未得到修复,成为永远的麻烦。匆忙之作。

William 提出:故事中有一部分很有趣。在开发人员和业务人员之间,对于代码相关的成本感觉不同。他给出了下面的比较:

业务人员 开发人员 临时的

可持续的

半途而废的

因此,利益干系人最喜欢半途而废的选择,因为成本不高,而且仍能交付他们想要的价值。这是非常严重的错误。William 认为,比较代码成本,要看长期成本和短期成本,而不是看角色。他提出:

短期成本 长期成本 临时的

可持续的

半途而废的

长期来看,半途而废的代码成本要高得多,而且会伤害业务。另一方面,尽管可持续的代码也许在开始时看起来成本高昂,但最终,经过长期运转后,可以说是“物美价廉”。

当然,那对开发人员来说不算糟糕,受影响的是公司整体。如果公司在软件方面的成本不断增加,对于在软件开发方法方面深思熟虑而且规范严谨的竞争对手来说,他们将会获得强有力的竞争优势。

Alex Chaffee 评论了上面三个分类,同时指出:在他看来,可持续的代码=测试+半途而废的代码+重构。 Chris Sterling 同样同意 William 的看法,他说:

过高业务期望值+工程人员的弱势反弹=高昂的技术债务,并导致工程方面的糟糕表现

Alberto Gutierrez 做出类似分析,提出看待代码的不同机制。他基于简单性和可扩展性,将代码的打分设定为从 A 到 F 。简单性定义了代码理解和阅读的难易程度。可扩展性定义了向现有代码中加入功能的难易程度。A 至 F 的范围定义了从最出色的代码到必须重新来过的代码这两个极端。

分析再次指出一个事实:最好的代码是既简单又可扩展的。这又映射到了 William 提出的可持续的代码种类。

那么,如何避免处于灰色地带?

在 William 看来,要让利益干系人知道:代码在长期的表现能够帮助团队交付业务价值。这也有助于团队避免技术债务的陷阱。一旦人们了解了这一点,那就更容易区分可持续的代码和处于中间阶段的代码。

很多项目就像我见过的一样,是半途而废的代码,却像可持续的代码那样得以销售。这很危险,就像牛仔程序员一样,他们冲进来拯救危机,离开时剩下很多半途而废的代码,让别人去解决。

查看英文原文: Temporary Code, Sustainable Code and Everything in Between

2010-03-25 22:242516
用户头像

发布了 143 篇内容, 共 39.5 次阅读, 收获喜欢 8 次。

关注

评论

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

业务与应用同步发展:应用现代化的策略建议

NGINX开源社区

数智人力帮您搭建人才梯队,从此挖掘人才不再靠缘分!

用友BIP

数智人力

AI+低代码:开发革命的崭新纪元!带你一文速通了解

加入高科技仿生人

AI 低代码 数智转型

财务共享数字化转型是财务管理的未来

用友BIP

财务共享

HStore表全了解:实时入库与高效查询利器

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 6 月 PK 榜

科兴未来|第七届“红船杯”嘉兴全球创业创新大赛开启报名

科兴未来News

数字经济 新能源 生物医药 新材料 高端装备

软件测试/测试开发丨学习笔记之Python函数

测试人

Python 程序员 软件测试 自动化测试 函数

开源赋能 工业铸魂|2023开放原子全球开源峰会开源工业软件分论坛圆满举行

开放原子开源基金会

开源 开放原子全球开源峰会 开源工业软件

Vue-路由器的两种工作模式(history和hash)

不觉心动

6 月 优质更文活动

集群限流的两种模式

互联网架构师小马

Java 集群限流

集群限流功能是如何实现的?

互联网架构师小马

Java sentinel 集群限流

如何实现大型企业全面预算管理?

用友BIP

全面预算 财务共享

软件测试|超好用超简单的Python GUI库——tkinter

霍格沃兹测试开发学社

python 3.5+ GUI

与 NGINX 团队直接交流 | 微服务之月火热报名中

NGINX开源社区

nginx 微服务 运维

假如你是CEO,遇到人才瓶颈又该如何破局?数智人力给您答案!

用友BIP

人力资源 数智人力

局域网办公的重要性,如何选择企业IM即时通讯APP?

BeeWorks

为开发者打造的开源低代码开发平台

力软低代码开发平台

数智人力带您揭秘:项目型组织降低人力成本背后的秘诀

用友BIP

数智人力

数据驱动,支撑企业数智化平台升级

用友BIP

数智平台

vue使用Element-ui组件库-完整引入

我搬去水星了

6 月 优质更文活动

Vue-后置路由守卫(afterEach)以及独享路由守卫(beforeEnter)

不觉心动

6 月 优质更文活动

科兴未来|第二届集成电路“太湖之芯”创业大赛,报名正式开始

科兴未来News

香港便宜虚拟主机:高性能、低成本,让你的网站事半功倍!

一只扑棱蛾子

香港主机 香港便宜虚拟主机

VSCode批量迁移插件

Vue路由守卫-前置路由守卫(beforeEach)

不觉心动

6 月 优质更文活动

大型企业高质量发展第一步,构建全面预算管理体系!

用友BIP

全面预算 财务共享

Wallys /MediaTek MT7915 DR7915/Wi-Fi 6 Wave 1+ chipset/support openwrt

Cindy-wallys

MT7915

大型企业在财务共享和财务数智化转型上,如何对标世界一流

用友BIP

财务共享

Downie 4 for Mac(最好用的视频下载软件)

背包客

macos Mac软件 mac软件下载 Downie 4 Mac版 Downie4

vue使用Element-ui组件库-按需引入

我搬去水星了

6 月 优质更文活动

Sentinel支持异步调用链的实现原理

互联网架构师小马

Java sentinel

临时代码、可持续代码以及二者之间的一切_研发效能_Vikas Hazrati_InfoQ精选文章