写点什么

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

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

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

关注

评论

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

重磅!云智慧推出轻量智能化服务管理平台轻帆云

云智慧AIOps社区

ITSM ITSM软件 ITSM解决方案 工单管理系统 工单管理

详细的Java学习指南,java高级面试题库

程序猿忙什么

淘系API接口推荐:淘宝商品描述信息数据接口

tbapi

淘宝API接口 淘宝商品描述接口

中文Navicat Premium 15 for mac破解安装包

iMac小白

亚马逊云科技在中国区域推出Amazon Network Firewall

财见

为什么 ERC-20 代币钱包的开发会改变代币化经济的游戏规则?

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

做市机器人招代理

区块链技术

云手机实现全方位的海外舆情监测

Ogcloud

云计算 云手机 海外云手机 云手机海外版 舆情监测

IT外包怎样帮助企业控制成本?

Ogcloud

IT IT外包 IT外包公司 IT外包服务 IT外包企业

PDF增强插件enfocus pitstop pro for mac中文破解版

iMac小白

软件测试学习笔记丨性能测试工具JMeter 基本使用

测试人

软件测试 测试开发

长查询问题,TDengine 终于攻克了!

TDengine

tdengine 时序数据库

俄罗斯淘宝代购系统丨淘宝代购集运系统PHP

tbapi

淘宝代购系统 淘宝代购集运系统 俄罗斯淘宝代购系统

UI自动化测试技术的突破与挑战

测吧(北京)科技有限公司

测试

GaussDB(DWS)运维利刃:TopSQL工具解析

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 华为云GaussDB(DWS)

已解决com.orbotix.common.DiscoveryException服务发现异常的正确解决方法,亲测有效!!!

小明Java问道之路

ENNOVI推出ENNOVI-CellConnect-Prism

财见

服务化UI页面结构树解析:优化UI自动化测试的实践探索

测吧(北京)科技有限公司

测试

数字先锋| 望闻问切更有“数”!

天翼云开发者社区

云计算 云平台

利用技术提升UI自动化测试的准确性

测吧(北京)科技有限公司

测试

为什么要对数据库优化

小魏写代码

机器学习视觉处理技术:UI自动化测试的未来发展方向

测吧(北京)科技有限公司

测试

谷歌SEO外链怎么做:初学者入门指南

九凌网络

"使用PAI实现涂鸦变大作"AIGC活动重磅来袭!

阿里云大数据AI技术

AIGC

如何优化UI自动化测试流程?

测吧(北京)科技有限公司

测试

从视觉识别到动作推荐:UI自动化测试的完整技术链条剖析

测吧(北京)科技有限公司

测试

软件测试学习笔记丨闭包与装饰器

测试人

软件测试

全球IT外包的趋势与发展

Ogcloud

外包 IT IT外包 IT外包公司 IT外包服务

谷歌SEO优化技巧:外贸独立站关键词的筛选与挖掘

九凌网络

⏳大咖直播预告 | 数据库系统访问控制『面面观』

KaiwuDB

数据库

提高测试覆盖率:基于深度学习的新视角分析方法

测吧(北京)科技有限公司

测试

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