rip*_*234 24 refactoring code-duplication
你是如何消除重复代码的狂热者?
就个人而言,每当我看到重复代码时,无论是在测试代码还是生产中,我都倾向于重复复制.我唯一的例外是这些:
Hun*_*ods 17
我一直坚持第一次复制(即原件加一份)通常不值得去除的原则.这是因为原件加一份副本可能是"一次性",并且你没有获得足够的去除它们以证明工作的合理性.
但是,一旦我开始制作第二个副本,然后我重写所有三个以删除重复.那是因为它现在(在我看来)从"一次性"变为"趋势".我将更有可能再次使用代码,因此删除重复项的努力现在值得.
我毫不犹豫地将这个过程称为"重构",因为这是XP阵营的流行语,我在80年代早期用FORTRAN和C做了这个.
良好的编程习惯是永恒的(通常也是时髦的).
干杯,
-Richard
Ken*_*tle 14
如前所述,我试图遵循"干"原则 - 但我也说有另一种情况,我经常不愿意消除重复:
这组测试将包括提取的任何方法的调用代码.
如果我无法测试它,我不能说我没有引入缺陷.有了测试套件,我至少可以说它已经完成了以前的工作.
Jar*_*Par 13
在消除代码重复方面,我认为自己是一个极端的狂热分子.只要我们没有达到里程碑的关键点,我会尽力删除我在代码中遇到的任何重复代码.最终,我只是耗尽时间,不得不单独留下代码用于下一个里程碑.在这种情况下,我经常至少检查一条评论,注意到重复以及需要采取哪些措施来删除它.
我总是首先想到为什么这个代码是重复的.大多数时候,答案是懒惰/无知/等等,我重构.但是,偶尔会出现重复实际有效的情况.我这里讲的是两段代码在语义上无关,只是碰巧有相同(或相似)实现的时刻.例如,考虑完全不相关(实际)流程的业务规则.规则可能等于一天,然后第二天其中一个更改.你最好希望它们不是由相同的代码表示,或者祈祷进行修改的开发人员可以发现正在发生的事情(单元测试,任何人?)).