如何删除/清除不再使用的代码?

时间:2010-03-19 13:35:55

标签: refactoring

我们有一个必须彻底解开的项目才能按时发货。它中有很多代码没有实际使用。我想清理代码,删除任何死木。我有权做到这一点,我可以说服人们,这是一个商业上合理的事情。 [我有很多自动化单元测试,一些自动验收测试和一组可以手动回归测试的测试人员。]

我的问题:我是一名经理,我从技术上不了解如何去做。

任何帮助?

4 个答案:

答案 0 :(得分:4)

确保它已全部签入您的源代码管理系统并标记为特定版本(预发布或您能记住的内容)

备份现场和非现场代码

在代码上运行静态分析工具以识别枯木

删除枯木

重建并重新运行所有测试

或者你可以忽略它; - )

答案 1 :(得分:4)

我假设问题是如何找到未使用的代码,对吗?答案在不同的语言中略有不同,但有一些通用的方法。我离开学校的第一份工作是在一个大型运输项目中找到并删除数万行未使用的代码。

第一个原则是专注于那些从不调用的东西,而不仅仅是不必要的东西。寻找和删除前者是一种非常机械和低风险的方法。后者是重构努力,有点复杂。总是最好先拿出简单的东西。

鉴于此,你想要的是静态分析的一部分,维基百科上有一个很大的available static analysis tools列表。您还应该搜索堆栈溢出中的“死代码”和您的语言(C ++,Java等)。过去,这个问题已经被提出了很多不同的方法。通常,您运行一个工具,查看它没有使用的内容,删除它,然后再次运行该工具以查找只有死代码正在使用的内容。重复。

从经理的角度来看,你绝对是对的。你有很多单元测试的事实意味着两件事:你可能会维护你不使用的东西的单元测试(这需要花钱),你所做的测试将让你做出这些机械改变。置信度。最好的办法是找到团队中喜欢自动化的人;他们经常有正确的心态去做这种工作。如果你有多个人在上面工作,我会让一个人学习静态分析仪并制定出一个模式。然后将团队分成代码的不同部分,这样它们就不会发生冲突。

这种工作可以非常快,通常有很好的回报。只需确保人们一次删除一个部分,编译,执行一些简单的测试,然后在继续之前提交。定期(通常在经过大量更改后,或者至少每天更换一次)进行完整的清洁重建和“大”测试,以确保真的没有破坏任何东西。您可以做的最糟糕的事情是尝试在系统中找到每一段死代码,然后立即将其全部删除然后提交。我保证删除其中一个碎片会破坏系统,你永远无法弄清楚它是哪一个。但如果你有条不紊地工作,这可能是一个非常低风险的努力。

答案 2 :(得分:2)

我认为没有任何简单的方法。我喜欢的一个想法是编写相当完整的自动验收测试,然后使用覆盖工具来查看未执行的代码。

答案 3 :(得分:2)

首先,我假设您的代码已签入某种版本控制。如果没有,你有比未使用的代码更深层次的问题。鉴于此,只需遵循此link的建议并删除它。