代码复杂度和开发人员生产力之间是否存在关联?


10

从长远来看,就开发人员的生产力而言,重构代码库所花费的时间是否值得?

对我来说,很明显,修改干净,设计良好的系统比设计不良的系统要简单得多,而且速度也要快,但是我有一些可靠的证据。是否有关于该主题的研究?


看到重构
hakre

1
自己开始保持混乱,并当法官。
图兰斯·科尔多瓦

Answers:


16

从经验上讲,具有较高复杂性指标(例如圈复杂度)的软件更难维护。有支持这种情况的研究可以追溯到1970年代(“程序复杂性和程序员生产率”,陈ET)。也有工作表明,复杂度密度,即系统规模上的循环复杂度,也与维护时间有关(“循环复杂度密度和软件维护生产力”,GK Gill,CF Kemerer)在此处也可以免费获得。遗憾的是,Chen的论文需要IEEE订阅,但是如果您有兴趣,可以尝试在其他来源上进行查找。

从质量的角度来看,花一些时间进行重构通常是值得的,假设您已经建立了一个测试框架来防止引入新的缺陷。这将使您能够更轻松地在系统中实现新功能,添加其他测试以及培训新开发人员进行工作。

但是,最终存在提供新功能和增值的压力。您需要在重构与新功能的实现与缺陷修复之间取得平衡。


2
要补充的另一点是,在重构时,您还可能以更好/更有效/更清洁的方式实现功能。我听到过无数次谚语说过“在5年内您会畏缩以为自己的代码'好'”
沃伦

1
@hakre我在一次和再次发布时都使用Google Web搜索和Google Scholar进行了检查。我最初写这篇文章的时候,没有纸都没有购买。但是,此后,有一篇论文发表在匹兹堡大学的某个领域,似乎属于其中一位作者,我为此添加了一个链接。另一篇论文不是免费提供的。我确实将标题添加到帖子的正文中,以使搜索它们稍微容易一些。如果您不想阅读这些论文,则需要接受我的分析以及我的知识和经验。
Thomas Owens

0

我正在寻找一些确凿的证据

然后,别再浪费您的时间了。

  1. 找到一些维护成本很高的代码。这简单。查看组织的故障单。

  2. 查找一些维护成本低廉的代码。查找经常运行的代码,但故障单很少或没有故障代码。

  3. 使用任何广泛可用的复杂性工具来测量复杂性。

  4. 晒晒证据。

现在,您提供了编号以确认明显的数字。


5
并不是的。必须将软件执行的任务的复杂性与所选实现所带来的增加的复杂性区分开来。
reinierpost

4
-1没有答案
Dave Hillier
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.