写点什么

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

  • 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:242299
用户头像

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

关注

评论

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

Go 语言单例模式全解析:从青铜到王者段位的实现方案

左诗右码

HarmonyOS实战:自定义表情键盘

IT小码哥

鸿蒙

鸿蒙 Swiper 组件解析:轮播交互与动画效果全指南

谢道韫

大数据-26 ZooKeeper 分布式协调框架 简介与配置 Leader Follower Observer

武子康

Java 大数据 hadoop zookeeper 分布式

生产物料管理混乱怎么办?一文教你搞清BOM 清单和 MRP 需求!

积木链小链

数字化转型 智能制造 生产管理

DApp 开发的技术方案

北京木奇移动技术有限公司

dapp开发 区块链开发 软件外包公司

德比软件基于生成式 AI 的智能酒店数据匹配系统

亚马逊云科技 (Amazon Web Services)

数据要素如何赋能企业创新

郑州埃文科技

数据要素

警报炸锅了,FastJson 又立功了。。

Geek_e3e86e

Java 编程

LLM 学习资料

Joseph295

HarmonyOS NEXT仓颉开发语言实战案例:电影App

幽蓝计划

harmoyos

Coremail受邀亮相华为开发者大会

科技热闻

MyEMS开源能源管理系统核心代码解读007

开源能源管理系统

开源 能源管理 代码解读

《HarmonyOSNext未成年人守护盾:3分钟搞定全自动分龄保护开发指南》

Turing_010

被阿里P7大佬上了一课:高并发与性能调优的碾压级理解!

程序员高级码农

java 程序员‘

Airtable 太贵了?5 个自托管替代方案成本&功能对比

NocoBase

开源 低代码 零代码 Airtable 自托管

这些面试问题,最好提前准备

王中阳Go

面试技巧

MyEMS开源能源管理系统核心代码解读008

开源能源管理系统

开源 能源管理

StarRocks 3.5 新特性解读:Snapshot 快照恢复、大导入性能全面升级、分区管理更智能

StarRocks

存算分离 iceberg 物化视图 Snapshot 快照 StarRocks 3.5

《HarmonyOSNext自动续期订阅支付全攻略 | 从环境检测到防漏单指南》

Turing_010

HarmonyOS NEXT仓颉开发语言实战案例:外卖App

幽蓝计划

HarmonyOS

今夏增长卷上天?看百度商家智能体玩转服务预约!

新消费日报

Windows Terminal - 现代化、功能丰富的终端应用

qife

windows 终端

AI 数据分析训练营 - 毕业总结

Simon

HarmonyOSNext支付全栈攻略:IAP Kit无漏单秘籍+避坑指南

Turing_010

Unity Catalog 三大升级:Data+AI 时代的统一治理再进化

StarRocks

AI LakeHouse StarRocks Apache Iceberg

《HarmonyOSNext全流程订阅开发指南:从配置到挽留的终极方案》

Turing_010

HarmonyOS NEXT仓颉开发语言实战案例:小而美的旅行App

幽蓝计划

harmoyos

HarmonyOS NEXT仓颉开发语言实战案例:健身App

幽蓝计划

HarmonyOS NEXT

2025华为HMS for Car全球生态峰会:同心聚力共筑生态联盟

极客天地

DApp 开发中的安全测试

北京木奇移动技术有限公司

dapp开发 区块链开发 软件外包公司

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