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