与传统智慧相反,新的研究发现,重组软件代码以提高效率和可维护性并不一定值得我们花费时间和精力。重构软件,即重构现有源代码以使其更高效、可读和可维护,可能是所有开发人员不时做的事情。当然,重构背后隐含的假设是,未来的收益——可以节省的人力物力,一定要大于现在的投资成本——所花费的时间和精力。然而,新的实验研究表明,情况可能并没有你想象的那么好,重构可能不会大大提高软件代码的质量,有时甚至根本不会提高。这项研究由斯里兰卡的研究人员完成,最近发表在国际软件工程与应用杂志上,标题为《An Empirical Evaluation of Impact of Refactoring On Internal and External Measures of Code Quality》。目标是测试常见的重构技术是否真的在外部(例如,代码更易于维护?)和内部(例如,代码行数)两个方面都提高了软件质量。研究人员选择了一个小型应用程序(约4,500行C#代码),该应用程序最初由凯拉尼亚大学的教职员工用于安排和管理在线文档。然后在他们的代码上实施10种常见的重构技术(例如,用子类替换类型代码,用多态性替换条件语句)。为了衡量重构对外部软件质量的影响,研究人员从Kelaniya大学挑选了一些了解面向对象编程和C#的计算机科学专业的学生。一半学生评估重构代码的分析和可变性,而另一半学生评估未重构代码。将每个代码库运行1000次并对结果进行平均,以分别测量重构和未重构代码的执行时间和资源利用率。使用VisualStudio分别计算重构和非重构内部代码的软件质量。这些指标是:可维护性指数、时间复杂度、继承深度、类耦合和代码行数。以下是这些研究人员得出的主要结论:重构不会使代码更易于分析重构不会使代码更易于更改重构代码不会使代码运行得更快重构代码不会导致资源利用率降低*重构代码确实更易于维护的证据。但是,上述研究结果还有待验证,因为测试对象是一个小样本——一个小应用程序和一套固定的重构技术。因此,目前,最好不要在实际工作中使用这个结果。翻译链接:http://www.codeceo.com/article/refactor-and-code-qulity.html英文原文:Studyfindsthatrefactoringdoesn'timprovecodequality
