写点什么

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

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

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

关注

评论

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

涨薪50%,从小厂逆袭,坐上美团L8技术专家(面经+心得)

Java~~~

Java 面试 微服务 JVM 架构师

配置ssh免密码登录

一个大红包

8月日更

KIE(Knowledge Is Everything)

LeifChen

drools 8月日更 KIE 知识库

Python3 数字

Geek_aee0b4

趁着课余时间学点Python(四)真的花点课余时间就能理解的分支控制语句

ベ布小禅

8月日更

同态加密算力开销如何弥补?港科大团队提出FPGA加速方案

星云Clustar

联邦学习 同态加密 隐私计算 算力加速 FPGA加速

Docker可视化管理工具对比(DockerUI、Shipyard、Rancher、Portainer)

xcbeyond

Docker Portainer shipyard rancher 8月日更

前方高能预警!阿里大佬出品“Spring实战学习笔记”震撼来袭

Java~~~

Java spring 面试 微服务 架构师

Java程序员3个月从月薪6k涨到15k,你知道我是怎么过来的吗?

Java~~~

Java 面试 多线程 高并发 架构师

秒杀系统架构设计,教你画好架构图!

九灵

Java 架构 面试 服务端

导致我们形不成「自律」的「罪魁祸首」

非著名程序员

提升认知 个人提升 自律 8月日更

特斯拉自研超算Dojo本月亮相? UCLA教授发推提前泄密

百度开发者中心

自动驾驶 最佳实践 方法论 科技信息

ipfs矿机怎么买?ipfs矿机在哪买?

ipfs矿机怎么买 ipfs矿机在哪买

fil矿机有哪几种?fil矿机算力怎么计算?

fil矿机有哪几种 fil矿机算力怎么计算

就这?腾讯云高工熬夜手写'Java微服务学习笔记'也就让我月薪涨3k

Java~~~

Java spring 面试 微服务 架构师

怎样回到常识做投资?

石云升

投资 8月日更 启发

金九银十面试分享!字节跳动Java研发岗(内附万能模板)

Java 编程 架构 面试 架构师

数据中心的组织架构是怎样的?

小鲸数据

大数据 数据中心 数字化 组织架构

圆梦腾讯之后,我收集整理了这份“2021春招常见面试真题汇总”

Java~~~

Java 面试 微服务 多线程 架构师

国内外 DevOps/DevSecOps 报告对比解读:安全与云原生持续升温

极狐GitLab

DevOps 安全 DevSecOps

模块四考试试卷存储方案

kitten

模块四

毕业设计

方堃

它来了!靶机渗透题目的一次实战记录

网络安全学海

网络安全 信息安全 实战 渗透测试 安全漏洞

【Vue2.x 源码学习】第二十六篇 - 数组依赖收集的实现

Brave

源码 vue2 8月日更

脚本测试服务器处理URL非法传参

liuzhen007

8月日更

手把手教你,从零开始搭建Spring Cloud Alibaba!这份笔记太牛了

Java~~~

Java 面试 微服务 Spring Cloud 架构师

15 道超经典大厂 Java 面试题!重中之重

程序员鱼皮

Java c++ 面试 后端 Go 语言

🏆(不要错过!)【CI/CD技术专题】「Jenkins实战系列」(3)Jenkinsfile+DockerFile实现自动部署

码界西柚

Docker Dockerfile jenkins 8月日更

Python3 运算符

Geek_aee0b4

我从外包辞职了,10000小时后,走进字节跳动拿了offer

Java~~~

Java 面试 微服务 JVM 架构师

Java程序员3个月从月薪6k涨到15k,你知道我是怎么过来的吗?

Java~~~

Java 面试 微服务 JVM 架构师

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