如何处理Linux下的重复代码?

时间:2009-02-09 09:25:51

标签: php linux copy-paste code-duplication

我正在寻找使用大约150k行代码处理遗留PHP项​​目中重复代码的最佳方法。

这是最好的手动接近还是有独立的重复代码检测器,可以减轻痛苦?

4 个答案:

答案 0 :(得分:2)

正如其他答案已经提到的那样,应该手动接近,因为您可能希望在进行更改时更改其他内容以使代码库更清晰。 也许实际的调用已经是多余的,或者可以组合类似的片段。

另外,在实践中,人们通常会略微更改复制的代码,因此通常不会直接重复,而是关闭变体。我担心自动c& p检测会使你失败。

然而,有一些重构工具可以帮助您实际执行更改(有时也可以找到可能的候选人)。 Google用于“php重构”,有很多工具可供选择,既可以单独使用,也可以作为IDE的一部分。

答案 1 :(得分:2)

CloneDR在大型源系统中找到重复的代码,包括精确副本和接近未命中,由langauge语法参数化。对于每个检测到的克隆集,它甚至会提出可用于替换克隆的抽象代码草图。

它适用于许多语言,包括PHP系统。可以在链接中找到Joomla(PHP框架)的PHP克隆检测报告示例。

答案 2 :(得分:1)

请同时考虑导致此代码重复的流程

如果你必须改变代码,那么复制代码的速度大多数时候比重构代码要快,因此它可以用于你的新用途以及旧用途。

所以你必须说服人们重构比简单的重复更好,因为它可以节省长期而不是短期的时间。

否则你会发现自己在两年内搜索到你在这里发布的同一个问题!

答案 3 :(得分:0)

也许这grep thread可以帮到你?