Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 何时合并重复的代码_Java_Actionscript 3_Duplicates - Fatal编程技术网

Java 何时合并重复的代码

Java 何时合并重复的代码,java,actionscript-3,duplicates,Java,Actionscript 3,Duplicates,我们正在使用代码静态分析工具(Sonar)检测项目中的重复代码。代码中似乎有很多重复的实例,但大多数都少于10行,并且只出现一次。在Stackoverflow社区的“意见”中,在整合代码重复方面,您应该在哪里划清界限?例如,对于单个副本,它应该在>=10行,或者应该考虑重复的行的总数。例如,考虑10次重复出现的不止一次。 对于上下文,我正在研究的编程语言是Java和ActionScript。 我意识到这个问题可能没有一个明确的答案,但是一些关于这个问题的明确指导可以节省我重构代码的大量时间(或者

我们正在使用代码静态分析工具(Sonar)检测项目中的重复代码。代码中似乎有很多重复的实例,但大多数都少于10行,并且只出现一次。在Stackoverflow社区的“意见”中,在整合代码重复方面,您应该在哪里划清界限?例如,对于单个副本,它应该在>=10行,或者应该考虑重复的行的总数。例如,考虑10次重复出现的不止一次。 对于上下文,我正在研究的编程语言是Java和ActionScript。
我意识到这个问题可能没有一个明确的答案,但是一些关于这个问题的明确指导可以节省我重构代码的大量时间(或者增加时间:)

如果它们是实际的重复,请尽快整合。你离开的时间越长,副本之间的分歧就越大,也就越困难。此外,当有人遇到一堆副本并需要进行“快速修复”时,他们会制作更多副本,但是一个干净的代码库会鼓励每个人保持它的干净。

理想情况下:立即合并

更实用:对于像您这样的小片段,一个好的测试是检查您是否为找到的代码定义了有意义的用途。如果代码的用途可以用几句话概括,那么您可能可以将其移动到单独的函数中。如果你不能总结,但它仍然是重复的,我会说离开它


理想情况下,您的代码不应该允许这样做,但在大多数代码中,多个内容最终都会进入一个子例程,例如打开套接字并发送数据包的代码。理想情况下,这些是不同的东西,因此它们具有不同的功能。如果您的生产代码不是如此完美,那么在以后更改之前,您可能会以套接字代码的结尾和数据包代码的开头相同(大约10行)结束。如果这些匹配,但您无法用几句话描述其功能,请留下它,并在您有时间时重新计算其余代码。

只有在代码有共同用途时才合并代码(特别是像您提到的10行这样的小代码块)。如果代码片段确实在执行不同的任务(但实现碰巧是相同的),那么从整合它们的设计角度来看,没有任何好处,如果您这样做的话,您可能需要在以后再次拆分它们。

如果要合并代码,并且您希望将应用于一个副本的所有更改应用于其他副本,则需要合并代码。你可能并不总是希望这种情况发生。为了满足不同的需求,您可能有两段代码,它们实际上做相同的事情,但实现完全不同的目的。需求波动,很快你就会发现,你统一的部分跟不上在不同方向发生的变化(我经常遇到这种情况,做得太过火了)


因此,规则很简单:合并执行相同操作的代码。不管多久。你不想在1000个地方做同样的改变。不要试图合并代码部分,这些代码部分可能看起来很相似,除非您发现它们有足够的共同点,这些代码部分可以重构成有用的子例程。还要记住,性能关键代码不是最佳实践的最佳场所。

还要记住,性能关键代码不是最佳实践的最佳场所。小心这种推理。通常情况下,“过早优化是万恶之源”,而性能关键型代码只有在其被证明有好处时才会变得丑陋:)