問題タブ [dry]
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.
python - Python optparse のデフォルトと関数のデフォルト
コマンドラインから呼び出してライブラリ関数としてインポートできるようにしたいpythonスクリプトを書いています。理想的には、コマンド ライン オプションと関数は同じ既定値のセットを使用する必要があります。単一のデフォルト セットを両方の場所で再利用できるようにする最善の方法は何ですか?
デフォルトが重複している現在のコードを次に示します。
python - Django - 設定で逆 URL マッピングを使用する
django 設定ファイルのいくつかのオプションは URL です。たとえばLOGIN_URL
、 やLOGIN_REDIRECT_URL
. これらの URL のハードコーディングを回避し、代わりに逆 URL マッピングを使用することは可能ですか? 現時点では、複数の場所で同じ URL を書いているのは本当にここだけです。
ruby-on-rails - コードの DRY をやめるのはいつですか?
つまり、コードを DRY することは良いことだと思われますよね? 私が取り組んでいたプロジェクトの 1 つに、使用されているコンテキストを除いて多かれ少なかれ同じモデル/エンティティが存在する状況がありました。つまり、そのようなすべてのエンティティには、タイトル、説明、タグ、user_id など、その他の属性がありました。したがって、それぞれのコントローラーでの CRUD アクションは非常に似ています。
私のマネージャーは、コードの繰り返しであり、DRY する必要があると主張しました。include
そこで彼は、 d がこれらすべてのエンティティーのコントローラーの CRUD アクションを処理する CRUD ruby モジュールを思いつきました。しかし、最終的にはシンプルさが損なわれました。すべての「もの」が「オブジェクト」と名付けられたため、コードは可読性を失いました。デバッグが難しくなり、コードを DRY する必要がなくなりました。
これはほんの一例でした。それらのいくつかは、ドライアップが複雑でデバッグしにくいコードをもたらしたものです。問題は、いつコードの DRY をやめるべきかということです。コードの単純さが失われていることに毎回気付くとは限らないためです (コードの作成者は、コードの単純さが失われていることにまったく気付かないことがよくあります)。また、シンプルさとドライ コードのどちらかを選択する必要がある場合、どちらか一方しか取得できない状況が発生した場合、何を選択する必要があります。
c++ - DRY vs 「マクロを避ける」
Windows API を使用して、C++ で XUL の独自の実装を作成しています。要素が XML パーサーによって構築されるという事実は、要素コンストラクターごとにカスタム コードを記述する必要がないように、それらが同一のインターフェイスを持っていることを必要とします。その結果、私の要素のほとんどは次のようになります。
したがって、ここには多くのコードの重複があります。それらを次のようなマクロ呼び出しに置き換えるのは良い考えではないでしょうか:
私はまだ概念を完全に理解していないので、クラス定義や (おそらく) 要素ごとにメソッドを追加する機能など、いくつかのことが欠けています。
しかし、この状況でマクロを使用することについてのあなたの意見を知りたいです。あなたの考えを自由に共有してください。
編集
現在、一連のテンプレートからソース ファイルとヘッダー ファイルを生成する小さな Ruby スクリプトを使用しています。ファイルが SVN に追加するように自動的にマークされるようにスクリプトを拡張し、Visual Studio プロジェクト ファイルを変更してファイルを含めます。これにより、手作業を大幅に節約できます。私はこの解決策にとても満足しています。参考までに、テンプレートは次のようになります。
CPP 文書:
java - すべての Web サービス呼び出しの一部としてパラメーターを指定する方法は?
現在、アプリケーションの各 Web サービスには、メソッドごとに追加されるユーザー パラメータがあります。例えば:
サービスには 20 のメソッドがあり、それぞれの最初のパラメーターは user です。そして、20 の Web サービスが存在する可能性があります。
実装で「ユーザー」引数を実際に使用することはありません-実際、なぜそこにあるのかわかりません-しかし、私は設計に関与していませんでした。 )。
とにかく、私はこの泥の大きなボールをまっすぐにしようとしています.
Web サービスを Spring プロキシでラップすることで、すでに長い道のりを歩んできました。これにより、インターセプターで前後の処理を行うことができます (メソッドごとに少なくとも 20 行のコピー アンド ペーストされたボイラー プレートが存在する前に)。
メソッドまたはパッケージに適用できるある種の「メッセージヘッダー」があり、特定のタイプのハンドラーまたは各 Web サービスメソッドの外部の何かからアクセスできるかどうか疑問に思っています。
レスさん、アドバイスありがとうございます
javascript - Jquery-動的に生成された要素を(再)配線する
多くの場合、次のような追加機能にフックされた要素があります。
しかし、このクラスのより多くのインスタンスがいくつかのコードを介して動的に生成されると、新しい$('.myfav')
ものは無効になり、再配線が必要になるため、次のようにします。
これが意味するのは、2つの同一のコードブロックができてしまうということです。1つは最初のページの読み込み用で、もう1つは動的に生成される新しい要素を再配線するためのものです。これはDRYコードではなく、あまり効率的ではありません。
これは本当にこれを行う唯一の方法ですか、それとも別のベストプラクティスがありますか?私の腸は、これよりも効率的なものが必要だと言っています(コードのDRYを支援するためにも)。
アップデート
cletusが説明しているように、.liveは.clickでうまく機能するようです。
しかし、.autocompleteのようなカスタムセットのプラグインで試してみましたが、機能しませんでした。私はこれを試しました:
したがって、ライブはこれらのカスタムプラグインを処理できるようには見えません(もちろん、私は間違っている可能性があります。何か知っている場合は更新してください)
excel - Excel: DRY フォーマットを行うには?
いくつかの条件付き書式スタイルがあります。新しい範囲に対して新しいルールを作成し続けたくありません。DRY を一度宣言し、別の場所で参照することで、DRY に従うことをお勧めします。私はこれを行うのに苦労しています。
条件付き書式ルールは、範囲が 1 つだけの場合にうまく機能します。
=Travel!$C$5:$P$8
ただし、別のシートに別の範囲を追加しようとすると失敗します。
=Travel!$C$5:$P$8,Equipment!$B$5:$H$11
[適用] をクリックしても、スプレッドシートには何も表示されず、問題のルールの範囲が次のようにリセットされます。
=Travel!$C$5:$P$8
これを行う方法はありますか?
ruby-on-rails - この Ruby コードのスニペットをどのように DRY しますか?
これは私を悩ませています。それはあまりにもDRYに見えません。より良い実装は何でしょうか? 余談ですが、この ActiveRecord finder は、レコードが見つからない場合に例外をスローしないのに、.find は例外をスローするのはなぜですか?
security - ビジネス ロジックの繰り返しを防ぐにはどうすればよいですか?
わかった。これが私の単純化されたシナリオです。多数のお客様のご注文に対応できる体制を整えております。スタッフ ユーザーはすべての注文を表示できるようにし、クライアント ユーザーは関連する注文のみを表示できるようにします。
特定のレコードを表示しようとするとき、OrderSecurity クラスで次の関数を使用します。
注文のリストをユーザーに表示したい時点で、 OrderService クラスで定義された次の関数を使用できます
これは上記の場合は問題ありませんが、ルールが複雑になるにつれてうまく機能しません。たとえば、クライアントのサブセットからの注文のみを表示できる、信頼性の低いスタッフ メンバーを表す別のユーザー タイプを追加するとします。次に、CanViewOrder および GetOrders 関数 (および場合によってはデータ アクセス クラス) にロジックを追加する必要がありますが、これは私の考えでは DRY 原則に違反しています。
ですから、私の質問は次のとおりです。ここでトリックがありませんか?ビジネスロジックを組み合わせて、これらの機能の両方が使用できる 1 つの場所で注文を表示する許可を得る方法はありますか?
それとも、心配しすぎて、2 か所でロジックを実行する必要がありますか?
(この特定のアプリケーションでは、私は ASP Classic を使用しています - プレイヤーが嫌いではなく、ゲームが嫌いです - しかし、どの言語でもこの問題をどのように解決するかに興味があります)
c++ - C++ でメソッド プロトタイプの重複を避ける良い方法はありますか?
ほとんどの C++ クラス メソッド シグネチャは、通常はヘッダー ファイル内の宣言と、私が読んだコードのソース ファイル内の定義との間で重複しています。この繰り返しは望ましくなく、このように記述されたコードは参照の局所性が低いことに悩まされています。たとえば、ソース ファイルのメソッドは、ヘッダー ファイルで宣言されたインスタンス変数を参照することがよくあります。コードを読むときに、ヘッダー ファイルとソース ファイルを常に切り替える必要があります。
そうしないようにする方法を誰かが推奨しますか?それとも、通常の方法で物事を行わないことで、主に経験豊富な C++ プログラマーを混乱させるつもりですか?
質問 538255 ヘッダー ファイル内の C++ コードも参照してください。