問題タブ [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.

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

functional-programming - Haskell 関数定義で DRY を適用するためのガイドライン

DRY 原則を適用する特定の方法が Haskell の良い実践と見なされるかどうかについて質問があります。例を示してから、私が取っているアプローチが良い Haskell スタイルと見なされるかどうかを尋ねます。簡単に言えば、質問は次のとおりです。長い数式があり、その数式の小さなサブセットを別の場所で繰り返す必要がある場合、DRY を維持できるように数式の繰り返しサブセットを常に変数に入れますか? ? なぜですか、そうでないのですか?

例: 数字の文字列を取得し、その文字列を対応する Int 値に変換するとします。(ところで、これは「Real World Haskell」の演習です)。

エッジケースを無視することを除いて機能するソリューションは次のとおりです。

これは foldr を使用し、アキュムレータは次の桁の値とこれまでの合計のタプルです。

ここまでは順調ですね。ここで、特殊なケースのチェックを実装しようとしたときに、エラーをチェックするためにさまざまな場所で "newValue" 式の小さな部分が必要であることがわかりました。たとえば、私のマシンでは、入力が (2^31 - 1) より大きい場合に Int オーバーフローが発生するため、処理できる最大値は 2,147,483,647 です。したがって、私は2つのチェックを入れました:

  1. 位の値が 9 (10 億の位) で、桁の値が > 2 の場合、エラーがあります。
  2. sum + (10 ^ place) * (digitToInt char) > maxInt の場合、エラーが発生します。

これらの 2 つのチェックにより、式の一部を繰り返す必要が生じたため、次の新しい変数を導入しました。

  • digitValue = digitToInt char
  • newPlaceComponent = (10^place) * digitValue

これらの変数を導入した理由は、単に DRY 原則を自動的に適用するためです。数式のこれらの部分を繰り返すことに気付いたので、それらを 1 回だけ定義しました。

しかし、これは良い Haskell スタイルと見なされるのでしょうか。明らかな利点がありますが、欠点も見られます。コードは間違いなく長くなりますが、私が見た Haskell コードの多くはかなり簡潔です。

では、あなたはこの Haskell スタイルが良いと考えていますか? また、この慣行に従っていますか? なぜ/なぜではないのですか?

価値があるのは、多くのエッジケースを処理するため、非常に大きな where ブロックを持つ私の最終的なソリューションです。DRY 原則を適用した結果、ブロックがどれだけ大きくなったかがわかります。

ありがとう。

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

asp.net-mvc - MVC と Web フォーム間でマスターページを共有することは可能ですか?

多くのレガシー Web フォーム ページを含むプロジェクトに MVC を追加しています。これはうまくいきます。ただし、現在、MVC 用と Web フォーム用に別々のマスターページがあります。2 つのマスター ページは、基本的に同じ出力を生成します。私は本当にWebフォームを1つ殺し、すべてのページでMVCマスターページを使用してDRYのままにしたいと思っています。

両方を変更するのを忘れたとき、DRYではないことですでに数回噛まれました。

私は明白な方法を試し、MVC マスターページで Web フォーム コンテンツ ページの MasterPage 属性をポイントするだけでした。これにより、MVC マスターは MVC ビューでのみ機能するというエラーがスローされます。

これは、MVC プロジェクトと Web フォーム プロジェクトが混在する場合によくある問題のようです。私の MVC マスターは ViewData で何もしていないので、Web フォームがそれらを使用できない理由はわかりません。

0 投票する
6 に答える
240 参照

programming-languages - 修正しやすいコードを書く

簡単に変更できるコードを作成するには、どのような方法がありますか?

私が経験から学んだことは、ほとんどの場合、捨てるために書く必要があるということです。そうすることで、実際のアプリケーションをコーディングする前に必要なドメイン知識とプログラム構造の感覚を養うことができました。

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

python - try... except... except... : コードの繰り返しを避ける方法

  • errorCount += 1複数の場所に書き込むことは避けたいと思います。
  • 私はより良い方法を探しています
  • 私はstore.rollback()すべてのexcept節で避けようとしています。

これを行う方法について何か考えはありますか?

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

ruby-on-rails - 移行形式 Add x to y に (必要な) 冗長性はありますか?

チケット テーブルに phone 列を追加するには、次のように記述します。

ここには冗長性があるようです。しかし、それは必要ですか?

AddPhoneToTickets移行の名前 ( ) と列定義 ( )の両方で「電話」を指定する必要があることを繰り返していませんphone:stringか?

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

c# - この方法を乾かす

このメソッドをジェネリックにするのに助けが必要です。さまざまなWebリストコントロールのリストを取得するために、約10回繰り返されます(特定のコントロールで使用されるタイプを「MyType」に置き換えます)。

これだけでは不十分な場合はお知らせください。これには、私が精通している、より高度な言語機能が必要だと思います。たぶん私はそれらすべてに同じリポジトリを使用させるべきですか?

ご協力いただきありがとうございます。

編集:あなたの助けをありがとう。私はピアサポートを持っていないので、このボードは素晴らしく、あなた方一人一人から何かを学びました。私はすべての答えを受け入れることができればいいのにと思います。

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

ruby-on-rails - Rails でパーシャルを使用するためのベスト プラクティス

DRY の原則に従って、特定のパターンを 1 回または 2 回以上繰り返す場合は、すぐにパーシャルを使用するようにしています。その結果、私のビューの一部は、10 以上の異なるパーシャルで構成されています。これが全体のパフォーマンスに悪影響を及ぼすのではないかと心配しています。一部のプログラミング本では、パーシャルの使用とメソッドの使用を比較しています。では、それらをいつ使用するかを決定するために同じ理論的根拠を使用する必要がありますか?

Railsプロジェクトのパーシャルのサイズと量に関するベストプラクティスは何ですか?

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

c#-3.0 - C#のインターフェイスでの拡張メソッドを使用した疑似多重継承?

同様の質問ですが、まったく同じではありません

インターフェイスと同じ名前空間の拡張メソッドを使用すると、10の異なるクラスで同じインターフェイスを同じ方法で実装する重複コードを用意する必要がないという点で、多重継承と同様の効果が得られると考えていました。

これを行うことの欠点は何ですか?私は長所はかなり明白だと思います、それは通常後であなたを噛むために戻ってくる短所です。

私が見ている短所の1つは、拡張メソッドを仮想化できないことです。そのため、すべてのインスタンスで同じ方法で拡張メソッドを実際に実装する必要があることを確認する必要があります。

0 投票する
6 に答える
6858 参照

php - if-then-elseが多すぎてコードが読めなくなる場合に、Do n't-Repeat-Yourself(DRY)の原則を順守する方法は?

Do n't-Repeat-Yourselfの原則を守りたいのですが、PHPをHTMLとCSSと一緒に作成するときに、同じコードをさまざまな状況で再利用すると、すぐにコードに非常に多くのコードが含まれるようになります。それ以外の場合、コードは簡単に保守できません。

ほとんどのコードエディタは{if}{else}{/ if}と一致しないため、テンプレートエンジンであるSmartyを使用する場合、これはより大きな問題になる可能性があります。したがって、プログラマーは一致するタグを視覚的に探す必要があり、簡単ではありません。ネストされた{if}{else}{/if}のレベルが3つまたは4つある場合。

そのような状況では、DRYに固執する方法はありますが、それでも優れた保守可能なコードがありますか?

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

javascript - ページタイトルをさりげなく JS で更新する方法 (Rails)

Ajax を使用してページにブログ投稿をロードするときは常に、ページ<title>を「My Blog - BLOGPOST_TITLE」に設定します。

もちろん、「マイ ブログ -」はアプリケーション レイアウトにも表示されます。

問題は、文字列 "My Blog - " をコード内で複製せずに Javascript に伝えるにはどうすればよいかということです。