2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

代码重用的价值被严重高估?

  • 2007-07-29
  • 本文字数:1235 字

    阅读完需:约 4 分钟

Carl Lewis 最近发现了 Dennis Forbes 的一篇虽然有点老但仍然很有意思的文章,文章的主题是关于衡量代码重用。 Lewis 详细讲述了在 Forbes 的 Blog 上众多具有争议性的概念之一:与代码是资产的普遍观点相反,如果代码脱离了组织机构考虑创建这些代码时的原因的直接背景,代码本身而言并没有什么价值。Forbes 还声称,如果没有明确地为通用性而设计的代码,尝试在多个项目间进行代码重用,甚至只是在同一机构里也是困难重重的。

Forbes 谴责许多内部开发小组现在的倾向,他们花费大量时间来构建可在多个项目间重用的所谓的内部框架和库:

这样的代码你积累得越多,就越是需要依赖于你现有的开发人员(并且这些只适用于某组织或是开发小组的资料也越来越占用他们的头脑),同时也越难让新加入的开发人员上手。这样的框架和库对于新员工来说通常有极陡峭的学习曲线,而在缺乏文档的情况下更甚。如果没有经过有效的重构,代码被重用的可能性也是很小的(因为这些代码是以恣意肤浅的方式编写出来的,而不是真正为重用而设计的……)

……每个组织都有必要扪心自问的是,他们所谓的“可重用代码”到底有什么值得称道的 a 价值,有什么实际的地方让竞争对手和新参与者们会为此买帐吗?对于绝大多数的案例来说,答案是价值为 0,对手们甚至认为连 0 块也不值。在这一行里代码窃贼格外罕见(虽然我们身处一个刻录 DVD 和 U 盘的时代),因为大多数的代码,除了整个行业都广泛使用的框架和库,脱离了特定的项目和开发组环境的情况下是完全没有任何价值的。尝试在其它项目中使用这些代码的话还不如根本没有的好。

Forbes 总结道,设计和开发一个恰当抽象并通用的框架所花费的精力远比一次性的解决方案要多,因为在分析重用代码所带来的好处时,很少把开发者用于接受复杂的新框架所花费的时间和代价计算在内,所以这是实际发生的代码重用比起通常想象中的要少得多的原因。值得注意的是,Forbes 并没有一概反对重用代码和框架,他反而很支持作为工业标准库的可重用代码。实际上,Forbes 提倡采纳已被广泛应用的行业标准框架(如开源框架),因这些框架都有恰当的抽象和清晰的封装边界从而可作为复杂的内部开发框架的替换品。

在 Carl Lewis 的文章中他强调了 Forbes 的多数代码库无价值的观点。Lewis 和我们分享了他曾遇到的一个例子,某公司对他们自己的代码极度自信,并称他们的代码为“需小心守护之物”。当 Lewis 为了他们代码不外泄的前提而飞越数千公里到达现场时,发现他们一直以来小心翼翼保护的代码库实际上非常糟糕。从这些类似的例子中,Lewis 相信“在多数情况下,[代码失窃的] 风险发生的几率远比一般想象中要低”,所以在有意义的情况下企业不应该害怕把代码共享出来。

Lewis 和 Forbes 给我们举了很有意思的现实例子,告诉我们如何看待我们的代码资产,如 Lewis 所说:

如此困难又需花费如此多精力的东西竟然只有如此小的价值,听起来似乎有违常理。我想这就是为什么有那么多公司喜欢夸大他们的代码的价值的原因吧。

英文原文链接: Code reuse highly overrated?

2007-07-29 04:351286
用户头像

发布了 27 篇内容, 共 11.0 次阅读, 收获喜欢 15 次。

关注

评论

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

Python 操作Mysql

度假的小鱼

pymysql 11月月更 Python操作Mysql

一文了解 Go 标准库 strings 常用函数和方法

陈明勇

Go golang 字符串 11月月更 strings

【web 开发基础】PHP 中数组的定义 (42)

迷彩

数据结构 数组 11月月更 数组的定义

【web 开发基础】PHP中数组的遍历(45)

迷彩

数据结构 数组 foreach 11月月更 数组遍历

读《程序是怎样跑起来的》体会

听风go

读书笔记 后端 计算机 计算机原理 读书总结

【web 开发基础】PHP中的数组 (41)

迷彩

php 数据结构 11月月更 关联数组 索引数组

Flink Forward Asia 2022 主论坛概览

Apache Flink

大数据 flink 实时计算

支持向量机-ROC曲线中的概率和阈值

烧灯续昼2002

Python 机器学习 算法 sklearn 11月月更

华为云大数据平台,助力企业数字化转型成效明显

路过的憨憨

2022-11-29:查找重复的电子邮箱。以下数据中a@b.com是重复的,请写出sql语句。 DROP TABLE IF EXISTS person; CREATE TABLE person (

福大大架构师每日一题

数据库 福大大

支持向量机-SVC的模型评估指标

烧灯续昼2002

Python 机器学习 算法 sklearn 11月月更

华为云桌面Workspace,让云上工作更高效!

路过的憨憨

制造业要用龙头带动整条产业链发展,阿里云智能制造加速器首次集结

B Impact

Python 操作Excel(xlrd和XlsxWrite)

度假的小鱼

11月月更 Python xlrd读取Excel Python xlrd

《2022开源大数据热力报告》发布,Flink 摘得「流处理」领域热力值 TOP1

Apache Flink

大数据 flink 实时计算

【web 开发基础】PHP中使用array()语言结构新建数组(43)

迷彩

数据结构 array 11月月更 array() 新建数组

“后 Hadoop 时代”,大数据从业者如何应对新技术趋势带来的挑战?

Apache Flink

大数据 flink 实时计算

【web 开发基础】PHP中的预定义数组(46)

迷彩

php web开发基础 11月月更 预定义 超全局数组变量

「Go易错集锦」正确使用defer避免代码重复

Go学堂

golang 程序员 个人成长 defer 11月月更

python版本管理工具DVC

AIWeker

人工智能 版本管理 11月月更 dvc

【web 开发基础】PHP中多维数组的声明 (44)

迷彩

数据结构 一维数组 二维数组 11月月更 多维数组

Python 操作mongodb库

度假的小鱼

mongodb 11月月更 Python 操作mongodb库

基于 Apache Flink Table Store 的全增量一体实时入湖

Apache Flink

大数据 flink 实时计算

Flink CDC 2.3 发布,持续优化性能,更多连接器支持增量快照,新增 Db2 支持

Apache Flink

大数据 flink 实时计算

【React技术】JSX在企业级项目的运用and一个元素渲染demo

恒山其若陋兮

前端 11月月更

【React技术】开发过程中遇到State和生命周期方法在类里面的运用

恒山其若陋兮

前端 11月月更

AI简报-重参数化RepVGG

AIWeker

深度学习 AI简报 11月月更

python小知识-内置方法和属性应用:反射和单例

AIWeker

Python python小知识 11月月更

细说值传递、引用传递和地址传递

闫同学

编程语言 计算机基础 11月月更

深度学习-浅谈keras的扩展性

AIWeker

深度学习 keras 11月月更

投入上百人、经历多次双 11,Flink 已经足够强大了吗?

Apache Flink

大数据 flink 实时计算

代码重用的价值被严重高估?_架构_Mark Figley_InfoQ精选文章