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

发布于:2007 年 7 月 29 日 04:35

前阿里 P9 技术专家 李运华,正在传授十几年架构实战心法,超过 46000 人跟随学习,点击查看 >>

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?

阅读数:415 发布于:2007 年 7 月 29 日 04:35

更多 架构、语言 & 开发、文化 & 方法 相关课程,可下载【 极客时间 】App 免费领取 >

评论

发布
暂无评论
  • 代码评审:寄望与哀伤

    关于代码评审,有时我们过于寄望,却又不免哀伤。

    2018 年 11 月 14 日

  • 我们究竟应不应该使用框架?

    AxonIQ商业主管及Axon 框架布道师Frans van Buul近日在其博客中发表了一篇关于框架和类库孰优孰劣的文章,引起了人们的热议。

    2019 年 2 月 27 日

  • 每个程序员都曾犯过的经典错误

    在程序员的职业生涯中,你都犯过哪些经典错误?

    2020 年 5 月 25 日

  • 为什么高级程序员写的代码都是傻瓜式的?

    当我还是菜鸡程序员时,我看到资深程序员们写的代码会觉得:“这也太傻了吧,毫无特点。”当我工作经验渐长后,才发现自己还是太年轻,naive。

    2019 年 5 月 13 日

  • 红狮会战:微软的反击

    微软屡战屡败,决定组织一次“红狮会战”再进军电子表格市场。Excel就此诞生,且微软抛开自家产品,将在苹果机上完成首发。

    2018 年 1 月 24 日

  • 考官面对面:程序员择业时常碰到的几个疑惑

    IT猎头公司银光联信的猎头合伙人,给你还原技术人的职业路线,并描述出一个大概的成长轨迹。

    2019 年 2 月 8 日

  • 代码永远是罪魁祸首吗?

    软件项目的失败可能归咎于各种各样的原因。一些项目因糟糕的需求而失败,另一些则由于钱和时间超支了,还有少数单纯是因为糟糕的管理所致。如果我们探究其根本原因,是否会发现所有项目失败的罪魁祸首是糟糕的代码呢?全都是这样吗?

    2010 年 12 月 19 日

  • SaaS 先驱 Salesforce

    Salseforce是云计算先驱,也是全球知名的CRM服务提供商。在20多年前就超前地提出了云计算和SaaS服务的概念,如今已是全球领先的云计算应用提供者。

    2018 年 8 月 24 日