问题标签 [code-duplication]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
920 浏览

algorithm - 我的龟兔赛跑可以改进吗?

这是我用于检测链表中循环的代码:

  1. 有没有办法摆脱循环内的代码重复?

  2. 我是否正确地假设在使乌龟向前迈出一步后我不需要检查?在我看来,乌龟永远不会在兔子之前到达列表的末尾(与寓言相反)。

  3. 还有其他方法可以简化/美化此代码吗?

0 投票
5 回答
19597 浏览

svn - Tortoise SVN:比较两个目录(而不是文件或修订)

您可以使用 Tortoise SVN 比较两个修订版或文件。还有一种方法可以比较两个目录吗?

我有两个包含源代码的目录。90% 的代码是相同的。现在我将在插件中存储相同的代码,因为重复的代码很糟糕。如果有一种方法可以比较两个目录,那么 Tortoise Diff 将是完美的选择。

我怎样才能做到这一点?如果 Tortoise 无法实现,您是否有其他想法/工具可用于此目的?

0 投票
4 回答
1004 浏览

java - 去重这个java代码重复

我有大约 10 多个类,每个类都有一个 LUMP_INDEX 和 SIZE 静态常量。我想要这些类中的每一个的数组,其中数组的大小是使用这两个常量计算的。目前,我为每个类创建了一个函数来创建数组,类似于:

等等。这些函数有 10 个,唯一的区别是类类型,所以你可以看到,有很多重复。

有人对如何避免这种重复有任何想法吗?谢谢。(我之前问过类似的问题,但我想我问的方式有点不对劲)

0 投票
2 回答
719 浏览

php - 避免 php 和 javascript 之间的重复代码

我有一个带有表格的 php 页面,用于将人员添加到一个小组中。

对于每个要添加的人,都有一个具有多个表单元素的表单元素,每个元素都根据人的编号命名。例如:

对于数据库中的每个人,php 页面都会填充一个表单部分。

要添加其他人,用户可以单击“+”图标,此时页面使用 jQuery 动态填充新的 . 为此,我只是将新的 div html 附加到现有表单中。这意味着 javascript 页面包含所有与 php 页面相同的 html 标记(待附加)。

这似乎是不必要的代码重复。每当我在 php 页面中更改某些内容时,我还必须在 javascript 代码中进行更改。

有没有避免这种代码重复的一般方法?我唯一能想到的是使用 jQuery 从已经存在的 div 中获取 html。但是在这种情况下,用户 n 的表单字段的值将出现在用户 n+1 的新代码中。

谢谢。

0 投票
4 回答
342 浏览

java - 避免代码重复

考虑以下代码:

我有 n 个匹配器,所有匹配器都是独立的(如果一个是真的,它不会说明其他匹配器......),对于每个为真的匹配器 - 我正在对其匹配的内容调用不同的方法。
问题:我不喜欢这里的代码重复和“幻数”,但我想知道是否有更好的方法......?(也许是访客模式?)有什么建议吗?

0 投票
1 回答
1233 浏览

jquery - JQuery:没有 JavaScript 重复的多个缩略图滚动器

我一直在研究缩略图自动滚动脚本。谁能建议我如何在不必复制 JavaScript 的情况下拥有多个版本的滚动条。如果我可以使代码通用,但以某种方式指定缩略图滚动器在其中工作的 DIVS 的 ID,也许在一个变量中,那就太好了。非常感谢您的帮助!:)

是在 JSFiddle 上。

下面是 JavaScript 的样子:

0 投票
9 回答
2926 浏览

java - 跟踪实用程序类

我最近对我在项目代码库中看到的一个问题感到越来越沮丧。

我正在开发一个具有 >1M 行代码的大型 Java 项目。接口和类结构设计的很好,编写代码的工程师也很熟练。问题是,为了使代码更简洁,人们在需要重用某些功能时编写实用程序类,结果随着时间的推移和项目的发展,越来越多的实用程序方法出现了。但是,当下一位工程师遇到对相同功能的需求时,他无法知道有人已经在代码中的某处实现了实用程序类(或方法)并在不同的类中实现了该功能的另一个副本。结果是大量的代码重复和太多具有重叠功能的实用程序类。

我们作为一个团队可以实施任何工具或任何设计原则,以防止实用程序类的重复和低可见性?

示例:工程师 A 有 3 个地方需要将 XML 转换为 String,因此他编写了一个名为XMLUtil的实用程序类并在其中放置了一个静态toString(Document)方法。工程师 B 有几个地方可以将文档序列化为各种格式,包括字符串,因此他编写了一个名为SerializationUtilserialize(Document)的实用程序类,并有一个称为返回字符串的静态方法。

请注意,这不仅仅是代码重复,因为上述示例的 2 个实现很可能是不同的(例如一个使用转换器 API,另一个使用 Xerces2-J),因此这可以被视为“最佳实践” “还有问题……

更新:我想我最好描述一下我们开发的当前环境。我们使用 Hudson 进行 CI,Clover 进行代码覆盖,使用 Checkstyle 进行静态代码分析。我们使用敏捷开发,包括日常谈话和(可能不够)代码审查。我们在 .util 中定义了所有实用程序类,由于它的大小,现在在根 (.util) 类下有 13 个子包和大约 60 个类。我们还使用 3rd 方库,例如大多数 apache commons jars 和一些组成 Guava 的 jars。

我很肯定,如果我们让某人负责重构整个包的任务,我们可以将实用程序的数量减少一半,我想知道是否有任何工具可以降低该操作的成本,以及是否有任何方法可以可以尽可能地延缓问题的再次发生。

0 投票
1 回答
388 浏览

perl - 帮助 Perl 代码重复数据删除的工具?

我正在寻找一些可以扫描给定项目树并报告代码重复的工具/库 - 即在各种文件中重复的代码块。

有这样的吗?

就像现在一样,我必须全部查看它们(文件),并搜索重复项,但这并没有让我觉得效率很高。

0 投票
3 回答
257 浏览

symfony1 - 一个动作在多个应用程序中重用

我有一个带有两个不同应用程序(前端、后端)的 symfony 应用程序,但有一个共同点。现在我在两个应用程序中都复制了它的代码,但我一点也不喜欢。

有没有办法在多个 symfony 应用程序中重用一个动作?

0 投票
5 回答
1846 浏览

python - 避免 Python 代码中的代码重复

考虑以下 Python 片段:

现在,假设我要处理 is 的情况KNone所以写入继续到文件的末尾。我目前在做

这显然不是处理此问题的最佳方法,因为我正在复制代码。有没有更综合的方法可以处理这个问题?很自然的事情是只有在is notif/break时才存在代码,但这涉及像 Lisp 宏那样动态编写语法,而 Python 不能真正做到这一点。为了清楚起见,我并不关心特定案例(我选择它的部分原因是为了它的简单性),而是学习我可能不熟悉的一般技术。KNone

更新:阅读人们发布的答案并进行更多实验后,这里有更多评论。

如上所述,我一直在寻找可以推广的通用技术,我认为@Paul 的答案,即使用takewhilefrom iterrools,最适合。作为奖励,它也比我上面列出的简单方法快得多;我不确定为什么。itertools虽然我看过几次,但我不是很熟悉。从我的角度来看,这是For The Win的函数式编程案例!(有趣的是,作者itertools曾经询问过有关 drop 的反馈。请参阅以http://mail.python.org/pipermail/python-list/2007-December/522529.htmltakewhile开头的线程。)我在上面简化了我的情况,实际情况有点混乱 - 我正在循环中写入两个不同的文件。所以代码看起来更像:

鉴于我发布的示例,@Jeff 合理地建议在 when is 的情况下KNone我只需复制文件。因为在实践中我无论如何都在循环,这样做并不是一个明确的选择。但是,takewhile可以轻松地推广到这种情况。我还有另一个在这里没有提到的用例,但也可以在takewhile那里使用,这很好。第二个例子看起来像(逐字)

在这里我可以使用条件

根据@Paul 的原始示例。但是,尽管代码有效,但我对我i从外部范围获得的事实并不完全满意。有没有更好的方法来做到这一点?或者也许它应该是一个单独的问题。无论如何,感谢所有回答我问题的人。对@Jeff 的荣誉提及,他提出了一些很好的建议。