如何从ruby中的程序中删除功能?

时间:2010-05-05 01:09:56

标签: ruby refactoring

你有一些code you want to remove与ruby项目中过时的功能相关联。如何确保摆脱所有代码?

一些通常有助于重构ruby的指南适用,但是还有一些挑战,因为没有任何东西调用的代码不会破坏任何单元测试。

更新:是否有人根据您的版本控制历史记录编写了任何内容,如果您提交的提交已删除了大部分但非全部代码,并且可以指出剩下的代码?

3 个答案:

答案 0 :(得分:2)

当前的想法:

  • 识别与过时功能相关联的堆栈的最外层部分:调用它的二进制脚本,或调用它的单元测试。
  • 查找仅由与过时功能关联的方法调用的方法。我经常使用git grep
  • 从理论上讲,运行变异测试并寻找旧的测试套件应用时曾经是变异抗性的代码,但现在可能会出现突变,这可能有所帮助。只有在您的代码首先经过充分测试时才有用! (或者你可以使用代码覆盖工具,如rcov而不是变异测试)
  • 运行测试套件将确保您没有删除任何不应该删除的内容!
    • 如果您经常进行测试,使用自动测试可以节省您的时间。
  • 如果您的代码结构良好,则应该更容易找到需要删除的相关方法。

答案 1 :(得分:0)

特别是在动态类型语言中,没有简单的方法可以做到这一点。如果你有单元测试,感谢编写它们的开发人员,因为它可以帮助你正确地删除代码。但你基本上是SOL。删除代码,如果代码中断,将其放回原位,找出它破坏的位置,尝试解决它,然后重复。

答案 2 :(得分:0)

查看您的代码覆盖率。任何未涵盖的代码可能是您要删除的代码的一部分(如果有的话)。 (请确保你已经删除了测试。=])