問題タブ [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.
c++ - テンプレート パラメータ、#define およびコードの複製
次のようなコードがたくさんあります。
#defines をテンプレート パラメーターに置き換えたいと思います。
しかし、パラメーターに依存する数行だけのために、 A::f() の A<0>::f() および A<1>::f() のコード全体をほぼ複製したくありません。また、以前の #ifdef の代わりに関数を呼び出したくありません。一般的な解決策は何ですか?
refactoring - VB用のコード重複リファクタリングツール
VB(または多言語)用の非常に特殊なツールが必要です。自分で作成する前に(おそらくPythonで)、すでに存在するかどうかを尋ねると思いました。
必要なもの:
- ツールは、パスを再帰的かどうかに関係なくクロールし、.bas、.frm、.xxxなどの拡張子のリストを検索する必要があります。
- 次に、そのファイルを解析し、関数やルーチンなどを検索する必要があります。
- そして最後に、見つかったものを出力する必要があります。
私はこれを「コードの冗長性を減らす」という考えに基づいており、悪いプログラマーが同じことをする多くの関数を、時には同じ名前で、時にはそうではないシナリオで作成します。4つのケースがあります:
- ケース1:同じ名前、同じコンテンツ。
- ケース2:同じ名前、差分コンテンツ。
- ケース3:差分名、同じ内容。
- ケース4:差分名、差分コンテンツ。
したがって、出力は次のようになります。
これは、私が何を必要としているかをあなたに知らせるためです。
だから、問題は:これに似た何かを達成するツールはありますか?
PS:はい、最初は良いコードを書く必要がありますが、ご存知のとおり、何かが起こります。
c# - 多重継承/コードの重複なしにページとマスターページ間でコードを共有するにはどうすればよいですか?
C#には多重継承がないこと、それも必要ないこと、そしてそれがあまりにも多くの問題を引き起こすことを説明する質問/回答を読みました。
現在、私は、コードを複製せずに、多重継承なしで物事を行う方法を本当に理解していないプロジェクトに取り組んでいます。
これが状況です。ホームページとマスターページから継承する他のページがあるWebサイトがあります(ホームページは継承しません)。ページとマスターページの両方が、カスタムログイン、統計、カスタマイズのためのユーザー設定の読み込みなど、いくつかのことを実行しています。これらのタスクのソースコードは2回コピーされるだけなので、現時点では解決策はお粗末です。
ホームページクラスはから継承しPage
ます。一方、マスターページはから継承しMasterpage
ます。論理的には、共通クラスから継承するのもいいのですが、多重継承なので不可能です。
では、代わりに何をすべきでしょうか?
私はいくつかの方法を考えましたが、それらを嫌います:
ページ/マスターページクラスから呼び出されるスタンドアロンクラスを作成します。したがって、たとえば、を書く代わりに
bool isDisplayingTips = this.CurrentUser.IsDisplayingTips
、を書きbool isDisplayingTips = this.SharedObjects.CurrentUser.IsDisplayingTips
ます。書くのが長いので、私はそれが好きではありません。「実際の」空の共通マスターページを作成し、ホームページとマスターページの両方をそこから継承します。マスターページパラメータにアクセスするためにより多くのコードを記述する必要があるだけでなく、処理が遅くなり、リクエストごとに追加のマスターページが必要になります。
何か案が?
php - PHP プロジェクト内で繰り返されるコードの識別
少なくとも数千行の長さのレガシー プロジェクト内に 1 つの PHP ファイルがあります。これは主に、約 10 ケースの switch ステートメントによって、いくつかの異なる条件ブロックに分割されます。それぞれのケース内に、完全に重複していなくても、非常によく似たコード ブロックのように見えるものがあります。これらのコード ブロックが同一またはほぼ同一であることを識別して、そのコードを抽象化し、ファイル全体のリファクタリングを開始するには、どのような方法を使用できますか? 私はこれが非常に手作業で可能であることを知っています (コード内の各 case ステートメントを個々のファイルと Diff に分けます) が、このプロセスを高速化するために使用できるツールに興味があります。
ありがとう。
c++ - コード重複の回避 (const-correctness) redux
const-correctness に関するこの質問をここで読んでいました。this
Scott Meyer ソリューションは良い回避策のように思えますが、ポインターを利用するメンバー関数 (const バージョンと非 const バージョンの両方を必要とする) がある場合はどうでしょう。メンバー関数が自動的に であるconst
場合、コードの大部分が 存在する単一の関数を持つことが難しくなる可能性があります。this
const this
const
私が思いついた回避策の 1 つは、単純に const 関数への参照をパラメーターとして渡すことでした。これにより、関数はポインターthis
を直接使用する代わりにその参照を使用できるようになりました。this
しかし、これは安全ですか?const_cast
const オブジェクトを実際に使用していないため、(非常にハッキーな場合) 安全であるように思われます。const
むしろ、オブジェクトの非 const 参照を渡すことによって、メンバー関数によって提供されるコントラクトを単に回避しているだけです。
例えば:
これは、const バージョンと非 const バージョンの関数が必要な場合に、大量のコードを複製する必要がないように思われますが、これは安全ですか? それとも、どういうわけか未定義の動作を引き起こしますか?
java - Spring MVC(3.0)で2つのURLルートを同じハンドラーメソッドにマップするにはどうすればよいですか?
URLルートuserPanel
にマップされたメソッドがあります:/user/panel
ただし、次のような別のメソッドを作成せずuserPanel
にルートを処理するメソッドも必要です。/panel
userPanel
重複を避けるために、メソッドに両方のルートを処理させる方法はありますか?
php - 重複コードの回避 (PHP)
システム管理者として、ときどき単純なアドホック プログラミングを行うことになります。私は進みながら学ぼうとしているので、一般的に、以下のコードの中に悪い習慣である、または不要であると思われるものはありますか?
特に、最後の 3 つの if ステートメントは、コードを不必要に複製しているように感じます。複雑に行き過ぎることなく、さらに短縮する方法はありますか?
javascript - JavaScript でのコードの重複
JavaScript でコードの重複を検出するツールはありますか? 「PMD Duplicate code Detector」を試してみましたが、.js 拡張子をサポートしていません。
language-agnostic - DRYするかしないか?コードの重複を避け、まとまりを保つことについて
コードの複製とリファクタリングに関する質問があります。一般的すぎないことを願っています。非常に低いレベルではない一連の関数呼び出しであるかなり小さなコード (〜 5 行) があるとします。このコードはいくつかの場所で繰り返されているため、ここでメソッドを抽出することをお勧めします。ただし、この特定の例では、この新しい関数は凝集度が低いという問題があります (これは、特に、関数の適切な名前を見つけるのに苦労することによって明らかになります)。その理由はおそらく、この繰り返されるコードがより大きなアルゴリズムの一部に過ぎず、適切な名前のステップに分割するのが難しいためです。
そのようなシナリオであなたは何を提案しますか?
編集:
より多くの人が役立つ可能性があるように、質問を一般的なレベルに保ちたかったのですが、コードサンプルでバックアップするのが最善であることは明らかです. この例はこれまでで最高のものではないかもしれません (かなり多くの点でにおいがします) が、うまくいくことを願っています。