【问题标题】:How to deal with duplicate code under Linux?Linux下如何处理重复代码?
【发布时间】:2009-02-09 09:25:50
【问题描述】:

我正在寻找处理大约 15 万行代码的遗留 PHP 项目中重复代码的最佳方法。

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

【问题讨论】:

  • 在我看来这个问题有点误导,因为它让我想到了操作系统对剪贴板操作的支持......也许“重复”代码是一个更好的措辞?
  • 发生了什么? 10 分钟内三个类似的问题?

标签: php linux copy-paste code-duplication


【解决方案1】:

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

此外,在实践中,人们通常会稍微更改复制的代码,因此通常不会出现直接重复,而是紧密的变体。我担心自动 c&p 检测通常会让你失败。

但是,有一些重构工具可以帮助您准确地执行更改(有时还可以帮助您找到可能的候选者)。谷歌的“php 重构”,有很多可用的工具,包括独立的和作为 IDE 的一部分。

【讨论】:

  • 自动检测可以发现大多数“未遂事件”。请参阅 CloneDR 对此问题的回答。
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

    还请考虑导致此代码重复的过程

    如果您必须更改代码,在大多数情况下,复制代码比重构代码更快,这样它既可以用于新用途,也可以用于旧用途。

    所以你必须让人们相信重构比简单的复制更好,因为它在长期而不是短期内节省时间。

    否则,两年后您会发现自己在谷歌上搜索您在此处发布的同一个问题!

    【讨论】:

    • 我不确定是谁对我投了反对票,但我不建议在这里复制代码!我只是在告诉人们为什么要复制他们的代码,而你必须阻止他们这样做。
    【解决方案4】:

    也许这个grep thread可以帮助你?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-24
      • 2012-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多