問題タブ [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 投票する
1 に答える
467 参照

ruby-on-rails - RailsモデルをよりDRYな方法で使用する際に、Unicodeフォームフィールドをクリーンアップして変更したい

現在、これを使用して空白を削除しています。


MS word タイプの unicode を取り除くために、同様のことをしたいと考えています。現在私は使用しています:


このメソッドは機能しますが、40 個のフォーム フィールドに対して実行する必要があるため、あまり DRY ではありません。

私は次のようなものを使用できると思っていました:


これが機能する方法で何かを理解していないことは知っています。self.attributes[u] = puts some_variable =
に置き換える と 、コンソールに正しい出力が得られます。その変数をフォームに戻す方法がわかりません。





間違っているコードが役立つ場合は、self.attributes[u] =何に置き換えるかわかりません。私はself.VariableNameOfField =を使用できると思っていたでしょうが、レールはそのように直接使用されている変数を認識しません。

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

zend-framework - DataMapper パターンは MVC を壊しますか?

複数の PHP フレームワーク、特に Zend Framework について調べてきましたが、適切な進め方について混乱しています。

Zend Framework は ActiveRecords を使用しませんが、代わりにテーブル データ ゲートウェイと行データ ゲートウェイ パターンを使用し、DataMapper を使用して行データ ゲートウェイの内容をモデルにマップします。これは、モデルに 1 がない場合に ActiveRecord が機能しなくなるためです。データベース テーブルへの 1 つのマッピング。Zend クイックスタート ガイドにこの例があります。

私には、彼らの例は、いたるところにたくさんのゲッターとセッターがあり、非常に肥大化しているように見えます。ドメイン駆動設計に関するさまざまなブログ投稿に出くわしました。非常に多くのゲッターとセッターを使用することは、すべての内部モデル データを外部に公開するため、悪い習慣であり、パブリック属性よりも利点がないと主張しています。ここに一例があります。

私の質問: これらのゲッターとセッターを削除すると、どのようにビューをレンダリングしますか? 実際にユーザーに何かを表示できるように、ある時点でデータがビューにヒットする必要があります。DDD のアドバイスに従うと、MVC での M と V の分離が崩れるようです。MVC と Zend の例に従うと、DDD が壊れているようで、すべてのモデルに対して大量のゲッター、セッター、および DataMappers を入力する必要があります。大変な作業であるだけでなく、DRY にも違反しているようです。

いくつかの (へのリンク) 良い例、またはすべてがどのように適合するかについての詳細情報をいただければ幸いです。ここでアーキテクチャとデザインのスキルを向上させようとしています。

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

ruby-on-rails - 動的動作をリファクタリングするためのRailsのベストプラクティス

条件付きの国別選択ドロップダウンを開発しました。この動作をアドレスモデルに除外して、動的な動作(ビューとコントローラーの間で多かれ少なかれ分割)を毎回コピーする必要がないようにします。ユーザーが完全なアドレスを入力できるようにしたい。

基本的に、私はつま先をDRYに少し深く浸そうとしています。しかし、ビヘイビアーをどこに埋め込むかは正確にはわかりません。モデルまたはヘルパーを使用して必要なフォームを作成しますか?最も重要なこと:状態のリストを更新するための動的な動作をどこでどのように呼び出すことができますか?アドレスコントローラーが必要ですか、それともモデル内からすべて実行できますか?

言い換えれば、私が今ビューに持っているものは次のようなものです:

更新メソッドはコントローラーにあります。

最後に、固有名または空白のテキストフィールドでドロップインされるパーシャルがあります。

さて、私がやりたいのは、モデルを介して住所を関連付け(たとえば、Person has_one:address)、新しい人物を作成するためのフォーム内で、次のようなものを使用できるようにすることです。

これにより、適切なドロップダウンが生成され、動的に結合され、その結果にPerson.address.countryおよびPerson.address.stateからアクセスできます。

前もって感謝します!

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

c# - ソースコードを XML ドキュメントの一部にし、DRY に違反しないようにする方法は?

ソース コードの一部を XML ドキュメントに追加したいと思います。次のように、ソース コードをいくつかの <code> 要素にコピー & ペーストできます。

これを維持するのは苦痛でしょう。C# の XML ドキュメントにソース コードを追加する可能性は他にありますか?

Sandcastle で XML ドキュメントを処理しており、そこからテクニカル ヘルプ ファイル (*.chm) を作成したいと考えています。そのヘルプ ファイルに、一部または完全なメソッド本体を追加したいと考えています。


編集: slide_rule からのコメントをありがとう。より現実的であまり自明ではない例を追加しました。

次のようなメソッドがあるとします。

料金の計算方法に関する情報をテクニカル ヘルプ ファイルに追加できると便利です。

最も明白な解決策は、アルゴリズムを平凡なテキストとしてコメントに書き留めることです。

別の解決策は、メソッドの本文をコピーしてコメント フィールドに貼り付け、それを <code> 要素に入れることです。このメソッド本体は、C# についてあまり知識がなくても非常に簡単に理解できます。そのため、テクニカル ヘルプ ファイルに記述しても問題はありません。

どちらのソリューションも DRY の原則に違反しています。情報を複製せずに、メソッド本体またはメソッド本体の一部をヘルプ ファイルに追加したいと考えています。

これはC#で可能ですか? (RDoc for Ruby はこれを行うことができると思いますが、C# での解決策が必要です)

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

ruby-on-rails - DRY を維持しながら、複数のアクションを単一のアクションにリダイレクトするにはどうすればよいですか?

actionをOptionsController含む がありますaccount。対応するビューには 3 つのフォームがあり、3 つの異なるアクション、update_profileupdate_userおよびに投稿されchange_passwordます。action各アクションが実行され、ビューが再度設定されてレンダリングされる にリダイレクトされます。

after_filter私はDRYになり、リダイレクトを行うために作成しようとしていました:

ただし、これは呼び出されないようです。むしろ、アクションはビューが見つからないことを訴えます。

これを DRY の方法で行う方法はありますか、または 3 つのアクションのそれぞれで redirect_to 呼び出しをそのままにしておく必要がありますか?

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

asp.net - バリデーターはビジネスロジックを複製しますか?

バリデーターを使用して、アプリケーションのプレゼンテーション層 (正規表現、必須フィールドなど) でのデータ入力をチェックし、メッセージや必須マーカー アイコンを表示できることを知っています。データ検証は、通常、ビジネス層に属します。収集しているデータに対して 2 セットの検証を維持する必要がないようにするにはどうすればよいですか?

編集:プレゼンテーションの検証が適切であり、それがユーザーに通知し、確実ではないことを知っています。2 つの場所で同じことを効果的にチェックしているという事実は残っていますね。

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

unit-testing - セットアップ/ティアダウンはテストの保守性を損ないますか?

これは別の質問について少し話し合うきっかけになったようで、私はそれ自身の質問にスピンする価値があると思いました。

DRYの原則は、メンテナンスの問題と戦うための私たちの選択の武器のようですが、テストコードのメンテナンスについてはどうでしょうか。同じ経験則が適用されますか?

開発者テストコミュニティのいくつかの強い声は、セットアップと分解は有害であり、避けるべきであるという意見です...いくつか例を挙げると:

実際、xUnit.netは、まさにこの理由でフレームワークからそれらを完全に削除しました(ただし、この自主的な制限を回避する方法はあります)。

あなたの経験は何ですか?セットアップ/ティアダウンは、保守性のテストに悪影響を及ぼしますか、それとも役立ちますか?

更新:JUnit4やTestNG(@ BeforeClass、@ BeforeGroupsなど)で利用できるようなよりきめ細かい構造が違いを生むでしょうか?

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

django - Django ビューを DRY に保つ

現在ログインしているユーザーを取得するコードがあります。

ユーザー名をすべてのページに表示したい。

現時点では、コードをすべてのビューに配置し、ユーザー オブジェクトをすべてのテンプレートに渡しています。

これは、django の DRY 倫理に反するようです。どうすれば自分自身を繰り返すことでこれを行うことができますか?

編集:おそらくユーザーは悪い例でした。

データベースからオブジェクトのリストを取得したい場合、

そしてそれらをすべてのページにリストします。

そのコードを記述し、すべてのビューでテンプレートにリストを渡す必要がありますか? または、そのリストをすべてのテンプレートで利用できるようにするコードを一度書くことはできますか?

0 投票する
7 に答える
4185 参照

language-agnostic - それは存在しますか:繰り返しコードファインダー?

近い将来、私はやや大きなプロジェクトを継承する予定です。最近、いくつかの小さな更新を行っていますが、同じ操作をわずかな違いで実行するメソッドがあるため、その一部でリファクタリングが使用される可能性があることに気付きました。

大量のソースコードを取得し、同様のコードブロックを見つけて、リファクタリングの可能性を特定できるツールがあるかどうか疑問に思いました。あいまい検索が存在する場合は、同様の操作を識別できるようにすると便利です(コードのチャックが逐語的に繰り返される以外)。

プログラムがコード自体をリファクタリングすることは期待していません。潜在的な繰り返しを特定するだけです。

私のプラットフォームはC#ですが、どのような解決策でも役に立ちます

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

configuration - Hudson 内での Hudson のプロジェクト レポート生成の構成

カバレッジ、テスト結果、メトリック、およびその他のレポートを作成するための Hudson 用のプラグインが多数あります。

レポートを作成したいプロジェクトごとに、ビルド スクリプト (または Maven POM) に追加の構成を追加する必要があるようです。たとえば、FindBugs または Cobertura レポートが必要な場合は、プロジェクトにレポート生成ステップを追加する必要があります。

すべての POM ファイルを更新する必要は本当にありますか? これは何度も繰り返すことであり、ターゲット プロジェクトのソース リポジトリ (POM がある場所) を更新する必要があります。

レポートの生成を有効にする代わりに、Hudson 内だけで設定を行うことは可能ですか? それぞれの Maven プラグインをデフォルト設定で有効にするだけでよいようです。これは、ハドソンによって外部で行うことはできません。