問題タブ [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 :(ファイルやリビジョンではなく)2つのディレクトリを比較します

2つのリビジョンまたはファイルをTortoiseSVNと比較できます。2つのディレクトリを比較する方法もありますか?

ソースコードを含む2つのディレクトリがあります。コードの90%は同一です。重複したコードは悪いので、プラグインに同じコードを保存します。2つのディレクトリを比較する方法があれば、TortoiseDiffはこれに最適です。

どうすればこれを達成できますか?Tortoiseでそれが不可能な場合、この目的のために他のアイデア/ツールを念頭に置いていますか?

0 投票する
4 に答える
1004 参照

java - この Java コードの重複を排除する

約 10 個以上のクラスがあり、それぞれに LUMP_INDEX と SIZE 静的定数があります。これらの各クラスの配列が必要です。配列のサイズは、これら 2 つの定数を使用して計算されます。現時点では、各クラスに配列を作成する関数があります。次のようなものです。

これらの関数は 10 個ありますが、違いはクラスの型だけなので、ご覧のとおり、大量の重複があります。

この重複を回避する方法について何かアイデアはありますか? ありがとう。(以前も似たような質問をしたのですが、ちょっと言い方が違っていた気がします)

0 投票する
2 に答える
719 参照

php - phpとjavascriptの間で重複するコードを避ける

小グループに人を追加するためのフォームが記載されたphpページがあります。

追加される人ごとに、複数のフォーム要素を持つがあり、それぞれが人の番号に従って名前が付けられています。例えば:

データベース内の各人について、phpページがフォームセクションに入力されます。

ユーザーを追加するには、ユーザーは「+」アイコンをクリックします。その時点で、ページはjQueryを使用して新しいを動的に入力します。これを行うには、既存のフォームに新しいdivhtmlを追加するだけです。これは、javascriptページにphpページと同じhtmlマークアップ(追加される)がすべて含まれていることを意味します。

これは、コードの不要な重複のようです。phpページで何かを変更するときはいつでも、javascriptコードでも変更する必要があります。

このようなコードの重複を回避するための一般的な方法はありますか?私が考えることができる唯一のことは、jQueryを使用して既存のdivからhtmlを取得することです。ただし、この場合、ユーザーnのフォームフィールドの値は、ユーザーn+1の新しいコードに表示されます。

ありがとう。

0 投票する
4 に答える
342 参照

java - コードの重複を避ける

次のコードを検討してください。

私にはn個のマッチャーがあり、すべてのマッチャーは独立しています(1つが真の場合、他のマッチャーについては何も言いません...)、真のマッチャーごとに、一致したコンテンツに対して異なるメソッドを呼び出しています。
質問:ここにあるコードの重複や「魔法数」は好きではありませんが、それを行うためのより良い方法があるかどうか疑問に思っています...?(多分ビジターパターン?)何か提案はありますか?

0 投票する
1 に答える
1233 参照

jquery - JQuery: JavaScript の重複を伴​​わない複数のサムネイル スクローラー

私はサムネイルの自動スクロールスクリプトに取り組んできました。JavaScript を複製せずに、複数のバージョンのスクローラーを使用する方法を誰か提案できますか? コードを汎用的にできれば素晴らしいのですが、サムネール スクローラーが機能する DIVS の ID を、おそらく変数で指定してください。助けていただければ幸いです。:)

これはJSFiddleにあります。

JavaScript は次のようになります。

0 投票する
9 に答える
2926 参照

java - ユーティリティ クラスの追跡

私は最近、自分のプロジェクトのコードベースで発生している問題にますます不満を感じています。

私は、1M 行以上のコードを持つ大規模な Java プロジェクトに取り組んでいます。インターフェイスとクラス構造は非常にうまく設計されており、コードを書いているエンジニアは非常に熟練しています。問題は、コードをよりきれいにしようとして、一部の機能を再利用する必要があるときはいつでも人々がユーティリティ クラスを作成することです。その結果、時間が経つにつれて、またプロジェクトが成長するにつれて、ますます多くのユーティリティ メソッドが作成されます。ただし、次のエンジニアが同じ機能の必要性に出くわしたとき、誰かが既にコードのどこかにユーティリティ クラス (またはメソッド) を実装していて、別のクラスに機能の別のコピーを実装していることを知る方法はありません。その結果、多くのコードが重複し、機能が重複するユーティリティ クラスが多すぎます。

ユーティリティ クラスの重複や低可視性を防ぐために、チームとして実装できるツールや設計原則はありますか?

例:エンジニア A には、XML を文字列に変換する必要がある 3 つの場所があるため、XMLUtilというユーティリティ クラスを作成し、その中に静的toString(Document)メソッドを配置します。エンジニア B には、ドキュメントを String を含むさまざまな形式にシリアル化する場所がいくつかあるため、SerializationUtilserialize(Document)というユーティリティ クラスを作成し、String を返す静的メソッドを呼び出します。

上記の例の 2 つの実装が異なる可能性が非常に高いため (一方はトランスフォーマー API を使用し、もう一方は Xerces2-J を使用するとします)、これは単なるコードの重複ではありません。 「問題も…

更新:私たちが開発している現在の環境をよりよく説明していると思います。CI には Hudson、コード カバレッジには Clover、静的コード分析には Checkstyle を使用しています。日々のトークや(不十分かもしれませんが)コードレビューを含むアジャイル開発を行っています。すべてのユーティリティ クラスを .util で定義します。このサイズにより、ルート (.util) クラスの下に 13 のサブパッケージと約 60 のクラスが含まれるようになりました。また、ほとんどの apache commons jar や Guava を構成する一部の jar などのサードパーティ ライブラリも使用しています。

パッケージ全体のリファクタリングを誰かに任せれば、ユーティリティの量を半分に減らすことができると確信しています。問題の再発を可能な限り遅らせることができます。

0 投票する
1 に答える
388 参照

perl - Perlコードの重複排除を支援するためのツール?

特定のプロジェクトツリーをスキャンし、コードの重複、つまりさまざまなファイルで繰り返されるコードのブロックについて報告するツール/ライブラリを探しています。

このようなものはありますか?

今のところ、私はそれら(ファイル)をすべて表示し、重複を検索する必要がありますが、それほど効率的ではありません。

0 投票する
3 に答える
257 参照

symfony1 - 複数のアプリケーションで 1 つのアクションを再利用

2 つの異なるアプリケーション (フロントエンド、バックエンド) を持つ symfony アプリケーションがありますが、共通のアクションが 1 つあります。今、私は両方のアプリでそのコードを複製しましたが、それはまったく好きではありません.

複数のsymfonyアプリケーションでアクションを再利用する方法はありますか?

0 投票する
5 に答える
1846 参照

python - Python コードでのコードの重複を避ける

次の Python スニペットを検討してください。

ここで、Kisのケースを処理したいとNoneします。そのため、書き込みはファイルの最後まで続きます。私は現在やっています

コードを複製しているため、これは明らかにこれを処理する最善の方法ではありません。これを処理できる統合された方法はありますか? が存在しないif/break場合にのみコードが存在するようにするのが自然なことですが、これには Lisp マクロのようにオンザフライで構文を書くことが含まれますが、これは Python では実際にはできません。明確にするために、私は特定のケース (部分的に単純にするために選択した) については心配していません。KNone

更新: 人々が投稿した回答を読み、さらに実験を行った後、いくつかのコメントがあります。

上記のように、私は一般化できる一般的な手法を探していました.@Paulの答え、つまりtakewhilefromを使用するのiterroolsが最適だと思います。おまけとして、上記の単純な方法よりもはるかに高速です。理由はわかりません。itertools何度か見たことはありますが、あまり詳しくありません。私の観点からすると、これはFor The Win !の関数型プログラミングのケースです。(面白いことに、 の作成者は、 のitertoolsドロップについてフィードバックを求めたことがあります。 http://mail.python.org/pipermail/python-list/2007-December/522529.htmltakewhileで始まるスレッドを参照してください。) 上記の状況を単純化したところ、実際の状況はもう少し厄介です。ループ内の 2 つの異なるファイルに書き込んでいます。したがって、コードは次のようになります。

私の投稿された例を考えると、@Jeff は合理的に、 is の場合はファイルをコピーすることを提案しましKNone。実際にはとにかくループしているので、そうするのはそれほど明確な選択ではありません。ただし、takewhileこの場合は簡単に一般化できます。ここでは言及していない別のユースケースもtakewhileあり、そこでも使用できてよかったです。2番目の例は次のようになります(逐語的に)

ここで条件を使用できました

@Paulの元の例ごと。iただし、コードは機能しますが、外側のスコープから取得しているという事実に完全に満足しているわけではありません。これを行うより良い方法はありますか?または、別の質問にする必要があるかもしれません。とにかく、私の質問に答えてくれたみんなに感謝します。いくつかの素晴らしい提案をしてくれた@Jeffへの名誉ある言及。