問題タブ [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.
c# - IQueryable.Where() の Linq 動的引数
C# 開発者としての生活を始めて 8 日目です。
私が取り組んでいるプロジェクトの多くの DomainModels について、ユーザーがレビュー/検索フォームで送信した内容を考慮して、テーブル内のすべてのレコードをフィルター処理する機能が必要です。
現在、2 セントのショート ツアーは次のとおりです。
フォームは FooController/review に送信されます。
次に Review は、すべてのキーと値のペアを Params['filter'] からディクショナリに取得し、それを次のように非常によく似た FooFinder.ByProperties 呼び出しのヘルパー クラスに渡します。
}
繰り返しのコードをできるだけ減らしたいと思い、次のようなことを試しました
しかし、それは多くの理由でうまくいかないことは明らかです...それでも、私が達成しようとしていることのアイデアはそこにあります. ある種の動的ヘルパー/ユーティリティを使用して、コードを簡素化し、フィルタリングのプロセスをスピードアップしたいと考えています。
私が試した他のアイデアは、リフレクションとその子供を使用して直接比較することでしたが、すべてのレコードが "r => CreatedDatetime > CreatedFrom" より大きい CreatedDatime プロパティなどをチェックする方法です。
これが意味をなさない場合は、コメントしてください。問題を解決するよう努めます。
grails - RESTful Grailsアプリケーション:UrlMappingの乾燥
いくつかのリソースを公開するgrailsWebアプリケーションがあるとしましょう。
- タグ
- URL
- ユーザー
このアプリケーションには、ユーザーが操作する従来のWebインターフェイスといくつかの管理機能があります。RESTful APIを介してアプリケーションからクライアントにリソースを公開したいのですが、アプリのその部分が既存のコントローラーとコードを乱雑にしたくないのです。そこで、次のことを思いつきました。
Webインターフェースが提供host/app_path/url/[list|show|create]
する場合は、RESTAPIをに設定する必要があります/host/app_path/rest/url
。
そのため、次のUrlMappingsファイルが作成されました。
問題は、これがここで最も乾燥したものではないということです。タグなどのリソースを追加すると、さらに悪化します。それらは、非常に類似したコードのさらに別の3つのブロックに変換されます...
非クラッド関数は、特定の基準で検索するようなものになります...
ループを使用してマッピングクロージャを生成しようとしましたが、成功しませんでした。私たちはここで完全に間違った方向に進んでいますか?
c++ - 防御的プログラミングは DRY 原則に違反しますか?
免責事項: 私は現在プログラミングを学んでいる素人です。プロジェクトに参加したことも、500 行を超えるものを書いたこともありません。
私の質問は次のとおりです。防御的プログラミングは、自分自身を繰り返さないという原則に違反していますか? 私の防御的プログラミングの定義が正しいと仮定すると (呼び出し関数が逆ではなく入力を検証するようにする)、それはあなたのコードに有害ではないでしょうか?
たとえば、これは悪いですか:
これと比較して:
繰り返しになりますが、素人の私には、単純な論理ステートメントがパフォーマンスに関してどの程度不利になるかわかりませんが、防御的なプログラミングはプログラムや魂にとって良くないことは確かです。
php - 繰り返しを避けるためにこの条件をリファクタリングする方法は?
これは、日付でフィルター処理できるイベント ページの一部です (事前定義された日付範囲または日付ピッカーを使用)。
foreach ($days as $day_number)...
条件ごとに etc. ループ全体を繰り返さないようにしたい。
ループ全体を関数に移動できると思いますが、実装方法がわかりません。
ruby-on-rails - RailsモデルをよりDRYな方法で使用する際に、Unicodeフォームフィールドをクリーンアップして変更したい
現在、これを使用して空白を削除しています。
MS word タイプの unicode を取り除くために、同様のことをしたいと考えています。現在私は使用しています:
このメソッドは機能しますが、40 個のフォーム フィールドに対して実行する必要があるため、あまり DRY ではありません。
私は次のようなものを使用できると思っていました:
これが機能する方法で何かを理解していないことは知っています。self.attributes[u] = puts some_variable =
に置き換える
と
、コンソールに正しい出力が得られます。その変数をフォームに戻す方法がわかりません。
間違っているコードが役立つ場合は、self.attributes[u] =何に置き換えるかわかりません。私はself.VariableNameOfField =を使用できると思っていたでしょうが、レールはそのように直接使用されている変数を認識しません。
zend-framework - DataMapper パターンは MVC を壊しますか?
複数の PHP フレームワーク、特に Zend Framework について調べてきましたが、適切な進め方について混乱しています。
Zend Framework は ActiveRecords を使用しませんが、代わりにテーブル データ ゲートウェイと行データ ゲートウェイ パターンを使用し、DataMapper を使用して行データ ゲートウェイの内容をモデルにマップします。これは、モデルに 1 がない場合に ActiveRecord が機能しなくなるためです。データベース テーブルへの 1 つのマッピング。Zend クイックスタート ガイドにこの例があります。
私には、彼らの例は、いたるところにたくさんのゲッターとセッターがあり、非常に肥大化しているように見えます。ドメイン駆動設計に関するさまざまなブログ投稿に出くわしました。非常に多くのゲッターとセッターを使用することは、すべての内部モデル データを外部に公開するため、悪い習慣であり、パブリック属性よりも利点がないと主張しています。ここに一例があります。
私の質問: これらのゲッターとセッターを削除すると、どのようにビューをレンダリングしますか? 実際にユーザーに何かを表示できるように、ある時点でデータがビューにヒットする必要があります。DDD のアドバイスに従うと、MVC での M と V の分離が崩れるようです。MVC と Zend の例に従うと、DDD が壊れているようで、すべてのモデルに対して大量のゲッター、セッター、および DataMappers を入力する必要があります。大変な作業であるだけでなく、DRY にも違反しているようです。
いくつかの (へのリンク) 良い例、またはすべてがどのように適合するかについての詳細情報をいただければ幸いです。ここでアーキテクチャとデザインのスキルを向上させようとしています。
ruby-on-rails - 動的動作をリファクタリングするためのRailsのベストプラクティス
条件付きの国別選択ドロップダウンを開発しました。この動作をアドレスモデルに除外して、動的な動作(ビューとコントローラーの間で多かれ少なかれ分割)を毎回コピーする必要がないようにします。ユーザーが完全なアドレスを入力できるようにしたい。
基本的に、私はつま先をDRYに少し深く浸そうとしています。しかし、ビヘイビアーをどこに埋め込むかは正確にはわかりません。モデルまたはヘルパーを使用して必要なフォームを作成しますか?最も重要なこと:状態のリストを更新するための動的な動作をどこでどのように呼び出すことができますか?アドレスコントローラーが必要ですか、それともモデル内からすべて実行できますか?
言い換えれば、私が今ビューに持っているものは次のようなものです:
更新メソッドはコントローラーにあります。
最後に、固有名または空白のテキストフィールドでドロップインされるパーシャルがあります。
さて、私がやりたいのは、モデルを介して住所を関連付け(たとえば、Person has_one:address)、新しい人物を作成するためのフォーム内で、次のようなものを使用できるようにすることです。
これにより、適切なドロップダウンが生成され、動的に結合され、その結果にPerson.address.countryおよびPerson.address.stateからアクセスできます。
前もって感謝します!
c# - ソースコードを XML ドキュメントの一部にし、DRY に違反しないようにする方法は?
ソース コードの一部を XML ドキュメントに追加したいと思います。次のように、ソース コードをいくつかの <code> 要素にコピー & ペーストできます。
これを維持するのは苦痛でしょう。C# の XML ドキュメントにソース コードを追加する可能性は他にありますか?
Sandcastle で XML ドキュメントを処理しており、そこからテクニカル ヘルプ ファイル (*.chm) を作成したいと考えています。そのヘルプ ファイルに、一部または完全なメソッド本体を追加したいと考えています。
編集: slide_rule からのコメントをありがとう。より現実的であまり自明ではない例を追加しました。
次のようなメソッドがあるとします。
料金の計算方法に関する情報をテクニカル ヘルプ ファイルに追加できると便利です。
最も明白な解決策は、アルゴリズムを平凡なテキストとしてコメントに書き留めることです。
別の解決策は、メソッドの本文をコピーしてコメント フィールドに貼り付け、それを <code> 要素に入れることです。このメソッド本体は、C# についてあまり知識がなくても非常に簡単に理解できます。そのため、テクニカル ヘルプ ファイルに記述しても問題はありません。
どちらのソリューションも DRY の原則に違反しています。情報を複製せずに、メソッド本体またはメソッド本体の一部をヘルプ ファイルに追加したいと考えています。
これはC#で可能ですか? (RDoc for Ruby はこれを行うことができると思いますが、C# での解決策が必要です)
ruby-on-rails - DRY を維持しながら、複数のアクションを単一のアクションにリダイレクトするにはどうすればよいですか?
actionをOptionsController
含む がありますaccount
。対応するビューには 3 つのフォームがあり、3 つの異なるアクション、update_profile
、update_user
およびに投稿されchange_password
ます。action
各アクションが実行され、ビューが再度設定されてレンダリングされる にリダイレクトされます。
after_filter
私はDRYになり、リダイレクトを行うために作成しようとしていました:
ただし、これは呼び出されないようです。むしろ、アクションはビューが見つからないことを訴えます。
これを DRY の方法で行う方法はありますか、または 3 つのアクションのそれぞれで redirect_to 呼び出しをそのままにしておく必要がありますか?
asp.net - バリデーターはビジネスロジックを複製しますか?
バリデーターを使用して、アプリケーションのプレゼンテーション層 (正規表現、必須フィールドなど) でのデータ入力をチェックし、メッセージや必須マーカー アイコンを表示できることを知っています。データ検証は、通常、ビジネス層に属します。収集しているデータに対して 2 セットの検証を維持する必要がないようにするにはどうすればよいですか?
編集:プレゼンテーションの検証が適切であり、それがユーザーに通知し、確実ではないことを知っています。2 つの場所で同じことを効果的にチェックしているという事実は残っていますね。