我正在尝试衡量我们组织中产生的代码中有多少实际上是可重用的,我想制定一些指导方针。
我想对外部世界有一些引用:
通常在单个应用程序中重用多少代码?
更具体地说 - 如果我们考虑一个完整的最终用户产品的所有代码(并最终排除第 3 方库),从多个地方调用多少函数和方法?
哪些指标用于衡量代码可重用性?
开源和/或闭源软件是否有可用的数字或研究?
最佳答案
How much code is typically reused in a single application ?
IMO 没有“典型”应用,尤其是在这方面。应用程序具有截然不同的架构和执行流程,这导致了不同的“重用”模式。
考虑一个批处理数据处理应用程序,它从特定格式的文件中读取数据,将其转换为另一种格式,然后保存。它实际上只有一个执行路径,因此从多个地方调用的方法并不多。
OTOH 考虑了一个具有多个独立插件的插件框架,这些插件都使用相同的基础设施层,因此该层中的函数会从许多不同的地方调用。
你真的不能说第一个应用程序的设计比第二个应用程序的设计更糟糕(没有实际进入案例特定的细节)。
还要注意,第二种情况下的指标很棘手:如果你只测量核心框架本身而没有插件,你会得到一个低重用计数,但对于实际插件,重用计数更高。由于插件可能是外部开发的,您甚至可能无法访问这些插件,因此您的指标会出现偏差。
这引出了另一点:重用可以在许多层面上发生。您可以在应用内或应用之间重复使用代码。后者只能通过考虑所有相关应用程序来衡量。
我认为更好的方法可能是从另一端开始,并搜索重复的代码(例如,使用 PMD 之类的工具来获取 Java 代码)。如果你在很多地方有大量重复的代码,你需要重构。
关于methodology - 测量代码可重用性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3184432/