代码之家  ›  专栏  ›  技术社区  ›  vitaut

如何说服同事代码重复是不好的?

  •  31
  • vitaut  · 技术社区  · 14 年前

    我的一个同事在我们一起工作的一个项目中实现了一个新特性,他通过从同一个项目中获取一个包含类似特性实现的文件,创建一个它的副本,重命名所有全局声明,并稍微修改实现。所以我们最终得到了两个大文件,除了重命名外几乎是相同的。

    我试着解释说,这使我们的项目更难维护,但他不想改变任何东西,他说这样编程更容易,如果代码“没有损坏”,就没有理由修复代码。

    我怎么能说服他这样的代码复制是一件坏事呢?

    它与 this questions 但是,我更感兴趣的是针对技术人员(另一个程序员)的答案,例如引用权威源(如书籍)会很好。 我已经尝试过简单的论点,但没有成功。

    14 回复  |  直到 14 年前
        1
  •  26
  •   Community CDub    8 年前

    当他在代码中发现一个错误时,问他会怎么做。他现在需要在多少地方修好?

    你也可以告诉他答案 this question (为什么复制和粘贴代码很危险?).

        2
  •  11
  •   Brad    14 年前

    当他想要咖啡时,让他从咖啡壶里一口喝一口,而不是一整杯。如果他加了奶油和糖,那就特别有效了,因为这些奶油和糖必须以极少量的分量涂抹。 这应该说明重复性任务是多么的麻烦和累人(比如纠正20段代码而不是一段)。

    然后,给他发一个链接到这个帖子,这样他就可以看到其他所有支持你的人。

        3
  •  10
  •   Eldad Mor    14 年前

    这里有两个选项:

    1. 他是个理性的人,没有太多的经验 . 在这种情况下,您可以合理化您的论点,也许可以向他展示一个更清晰的代码复制示例,您的代码中有其他人。您还可以在原始副本中找到一个bug(或者更好的是,一些bug),并告诉他现在他的代码被破坏了,他必须修复它。

    2. 他是个顽固的混蛋 那你就不应该把精力浪费在他身上。去找他的老板,让老板来处理。有些人就是这样。

    虽然第一个选择显然要好得多,但有时你没有选择。如果你最终需要在早上3点维护他的代码,因为一些重要的客户开始在地球的另一边大喊大叫,那么这绝对是你的问题,你的老板应该处理它。

    最后,如果你的老板认为你错了,你可能是在错误的地方。

        4
  •  8
  •   Etienne de Martel    14 年前

    给他一份 重构 .

        5
  •  5
  •   Alex Brown    14 年前

    把你的代码版本改进的如此之多,以至于他对嫉妒感到沮丧,然后说-如果你刚刚链接到我的代码…

        6
  •  3
  •   Ira Baxter    14 年前

    你的同事正在通过牺牲更长的时间来优化他的短期效果 组织的期限效力(例如,他的其他同事 就像他自己一样)。第一个文件中需要的任何更改 可能是第二个要求,但没人会记得…和 这将导致2个查找和修复周期,而不是一个。

    您可以在代码上运行一个克隆检测器,并将结果简单地展示给他的经理。

    Wikipedia on duplicate code 以获取列表。

    您可以使用我们的 CloneDR 探测器。它是设计的 要查找具有一致重命名的检测大代码块,它可以 准确显示发生了什么。

        7
  •  3
  •   Carl Manaster    14 年前

    因为当你发现一个bug时,你需要在两个地方改变它。因为当您想要添加一个新特性时,您需要在两个地方添加它。

        8
  •  2
  •   Caladain    14 年前

    以技术理由向你的老板申诉。如果老板同意你同事的方法/和/或不让他解决问题,那么如果对理性的吸引力不起作用,你就没什么能做的了。

        9
  •  2
  •   Jinesh Parekh    14 年前

    不是让你的朋友马上解决这个问题。这是为了培养你的团队。

    让他意识到他对团队和项目不公平。如果他还是不同意,给他一杯咖啡,让他坐下来小口喝,你可以拿起他的键盘,在他面前修改代码。

    他可能会感到羞耻,下次也不会这么做(大胜)。我已经用了4次了,而且一直有效!

    祝你好运。

        10
  •  2
  •   limc    14 年前

    有很多理由不重复代码,但只要问…您的团队想要维护100K行代码(代码重复)还是50K行代码?在这一点上,代码复制似乎是最小的,这就是为什么你的同事没有看到dry概念的重要性,但是想象一下,如果s/he在接下来的5年中复制了越来越多的代码。谁来维护这个代码?你的团队?如果有一天他/她辞职了怎么办?你的团队想维持这种废话吗?:)如果没有,那么您已经提出了一个非常有说服力的案例,不重复代码,更不用说“更多的重复”=“将来更容易出现更多的错误”。

        11
  •  1
  •   Pacane    14 年前

    告诉他,你永远不知道一个应用程序在企业中的地位……一个简单的测试应用程序有时会被反复修改,最终会被大量使用…我经常在小公司看到这种情况。然后,你可以简单地现在就做,简短而甜蜜,尽管它可以是……

        12
  •  1
  •   Carlos    14 年前

    他可能认为它没有坏,也不会坏。同样,完美是好的敌人。我认为他并没有忘记复制/粘贴的危险,他只是对潜在错误的评估与你不同。

    也许你可以为他打破它,以显示它是多么的容易。如果你不能,也许他是对的。

        13
  •  1
  •   csg    14 年前

    如果他比你高明(或主管),请多问些解释-有可能了解更多的上下文…可能不值得重构代码(可能是一个小项目)。

    如果他和你一样,你可以向你的上级汇报,提出这个解决方案(更好)。

    如果你比他强,就“请”他按你的方式去做…

        14
  •  0
  •   reinierpost    14 年前

    首先,承认他是对的:复制粘贴确实更快 现在 .

    然后,假设问题在于长期的成本,并且成本会增加,因为随着重复,系统的顺序不如它可能的那么有序。他引入了混乱,杂乱,而且你的混乱越多,就越难使用系统。现在做些努力来更好地组织它,从长远来看(通常)会有回报。就像把你的桌子或房间整理好一样。

    这是伊瓦尔·雅各布森关于 software entropy

    推荐文章