NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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

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

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

关注

评论

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

Amazon SageMaker新玩法——定制你的语音识别模型

亚马逊云科技 (Amazon Web Services)

AI/ML

自然语言处理实战——巧用 Amazon Comprehend 分析社交媒体数据

亚马逊云科技 (Amazon Web Services)

AI/ML

Amazon DeepRacer训练日志分析范例与强化学习Reward Function设计

亚马逊云科技 (Amazon Web Services)

AI/ML

2021年的感悟生活

卢卡多多

盘点2021

手把手教程 | 使用无服务器模板部署机器学习模型

亚马逊云科技 (Amazon Web Services)

AI/ML

使用 Amazon Redshift ML 构建多分类模型

亚马逊云科技 (Amazon Web Services)

AI/ML

无监督欺诈检测|基于iForest异常值检测法的反欺诈研究

索信达控股

算法 模型 反欺诈 iForest 金融交易欺诈检测

Java 中的 xx ≠ null 是什么新语法?

CRMEB

优酷弱网平台落地实践

阿里巴巴终端技术

弱网 弱网环境高可用

虎符上线“圣诞狂欢 没礼不行”活动 邀你瓜分等值66,666 USDT的圣诞礼包

区块链前沿News

区块链 节日 Hoo 虎符交易所 圣诞

Amazon Marketplace上的SaaS架构设计 ——如何支持跨多账户对接

亚马逊云科技 (Amazon Web Services)

AI/ML

使用Amazon SageMaker部署CVAT AI自动图像标注系统

亚马逊云科技 (Amazon Web Services)

AI/ML

利用 Amazon IoT Greengrass 在边缘 DIY 自动浇花系统

亚马逊云科技 (Amazon Web Services)

IoT

手把手教程 | 基于Amazon Kinesis Video Streams实现IP Camera云存项目

亚马逊云科技 (Amazon Web Services)

IoT

网易云音乐广告CTR预估模型演进过程

网易数帆

机器学习 CTR 网易云音乐

基于Amazon Machine Learning Bot 的 Named-entity Recognition 快速解决方案

亚马逊云科技 (Amazon Web Services)

AI/ML

在Amazon SageMaker上快速、灵活构建Amazon TensorFlow模型的在线推理服务

亚马逊云科技 (Amazon Web Services)

AI/ML

直播预告 | 拍乐云与你相约RTSCon2021开发者沙龙

拍乐云Pano

WebRTC RTC

“腾源会”成立一周年:助力 40+ 开源项目成长,集结 50+ 位导师大使

腾源会

开源 开源社区 腾源会

54 K8S之Prometheus介绍

穿过生命散发芬芳

k8s 28天写作 12月日更

如何将您的自定义容器镜像导入Amazon SageMaker Studio Notebooks

亚马逊云科技 (Amazon Web Services)

AI/ML

【12月日更】深度解析redis分布式锁,那些你不知道的秘密!

小梁编程汇

redis 分布式 RedLock redis分布式锁

CRM 和 C4C product category hierarchy的可编辑性控制逻辑

Jerry Wang

中间件 CRM 28天写作 ERP 12月日更

实力超越,绝对领先——Amazon SageMaker 在企业 MLOps 平台报告中获得高度肯定

亚马逊云科技 (Amazon Web Services)

AI/ML

Amazon SageMaker Data Wrangler 简化数据准备过程,助力机器学习

亚马逊云科技 (Amazon Web Services)

AI/ML

Dubbo 框架学习笔记十一

风翱

dubbo 12月日更

语音信号处理7:语音信号的非线性产生模型

轻口味

28天写作 12月日更

模块七作业

21°Char

从350ms到80ms,打造新零售场景下 iOS 短视频的极致丝滑体验

阿里巴巴终端技术

ios App 短视频 移动开发

在亚马逊云科技Marketplace上的SaaS架构设计——如何支持多产品使用单一账户中心

亚马逊云科技 (Amazon Web Services)

AI/ML

2022 全栈开发值得关注的技术产品

开源之巅

ide Web 云服务

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