HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

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

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

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

关注

评论

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

快速入门 TinyVue 组件库一键换肤!get“多主题适配”技能

OpenTiny社区

开源 前端开发 web开发 OpenTiny TinyVue

Python 中寻找列表最大值位置的方法

霍格沃兹测试开发学社

实现Python日志点击跳转到代码位置的方法

霍格沃兹测试开发学社

Partisia Blockchain的MOCCA方案,资产托管领域的全新范式

石头财经

一文读懂Partisia Blockchain 的MOCCA方案:资产托管的最优解

加密眼界

相聚杭州,53 位代表参会!龙蜥社区两大委员会圆满结束

OpenAnolis小助手

操作系统 龙蜥社区

MES生产车间物料如何管理才能降本增效?

万界星空科技

生产管理系统 mes 万界星空科技 物料管理 生产物料

一文读懂Partisia Blockchain 的MOCCA方案:资产托管的最优解

大瞿科技

Playwright执行 JavaScript 脚本:探索浏览器自动化的新境界

霍格沃兹测试开发学社

探索Vue.js:从基础到进阶

霍格沃兹测试开发学社

一文读懂Partisia Blockchain 的MOCCA方案:资产托管的最优解

BlockChain先知

使用Python进行网络数据可视化的多种方法与技巧

我再BUG界嘎嘎乱杀

Python 可视化

奥迪运动通过 trinckle 软件和 UltiMaker 3D 打印机加速设计和生产流程

财见

哪个开源Wiki系统最好用?2024年12款优质推荐

爱吃小舅的鱼

开源Wiki Wiki系统 团队知识管理

首家!腾讯云ES通过中国信通院检索增强生成(RAG)技术要求专项测试

腾讯云大数据

ES

观测云告警集成 PagerDuty 最佳实践

观测云

告警

世界经合组织(OECD)认为德国在人工智能领域处于全球领先地位

财见

探索 Go slog 标准库:设计与应用

俞凡

golang

哈银消费金融端午节金融知识普及,守护消费者权益,助力智慧消费!

Geek_2d6073

利用机器学习助力发动机舱电磁场强仿真,实现快速预测

Altair RapidMiner

机器学习 数据分析 #人工智能

低代码开发:企业数字化部门的数字化转型之路

不在线第一只蜗牛

低代码 数字化

低代码开发:中小企业数字化转型指南

快乐非自愿限量之名

低代码 数字化

系统运维联盟 5 月会议召开,围绕“进展、规划与合作”展开讨论

OpenAnolis小助手

操作系统 龙蜥社区系统运维联盟

社区新标准发布!龙蜥社区标准化 SIG MeetUp 圆满结束

OpenAnolis小助手

标准化 龙蜥meetup 龙蜥社区标准化SIG

发掘 Chrome 的实用命令:提升你的浏览器使用体验

霍格沃兹测试开发学社

SSH 简介:安全远程访问的利器

霍格沃兹测试开发学社

线上观看人次2万+!「飞天技术沙龙-CentOS 迁移替换专场」北京站圆满结束

OpenAnolis小助手

操作系统 龙蜥社区 CentOS迁移 Alibaba Cloud Linux Anolis OS

【三体学者】著名的黑暗森林理论是什么含义?

AppBuilder

java抽象类与接口的区别

小曾同学.com

接口 java\ 抽象类

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