我正在寻找使用大约150k行代码处理遗留PHP项目中重复代码的最佳方法。
这是最好的手动接近还是有独立的重复代码检测器,可以减轻痛苦?
答案 0 :(得分:2)
正如其他答案已经提到的那样,应该手动接近,因为您可能希望在进行更改时更改其他内容以使代码库更清晰。 也许实际的调用已经是多余的,或者可以组合类似的片段。
另外,在实践中,人们通常会略微更改复制的代码,因此通常不会直接重复,而是关闭变体。我担心自动c& p检测会使你失败。
然而,有一些重构工具可以帮助您实际执行更改(有时也可以找到可能的候选人)。 Google用于“php重构”,有很多工具可供选择,既可以单独使用,也可以作为IDE的一部分。
答案 1 :(得分:2)
CloneDR在大型源系统中找到重复的代码,包括精确副本和接近未命中,由langauge语法参数化。对于每个检测到的克隆集,它甚至会提出可用于替换克隆的抽象代码草图。
它适用于许多语言,包括PHP系统。可以在链接中找到Joomla(PHP框架)的PHP克隆检测报告示例。
答案 2 :(得分:1)
请同时考虑导致此代码重复的流程!
如果你必须改变代码,那么复制代码的速度大多数时候比重构代码要快,因此它可以用于你的新用途以及旧用途。
所以你必须说服人们重构比简单的重复更好,因为它可以节省长期而不是短期的时间。
否则你会发现自己在两年内搜索到你在这里发布的同一个问题!
答案 3 :(得分:0)
也许这grep thread可以帮到你?