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