問題タブ [responsibility]

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 投票する
2 に答える
295 参照

oop - 責任ベースのモデリングとクラスの変更理由

このテキストで私読んだ

単なる栄光の責任であるコンポーネントに注意してください。コンポーネントは、システムで目的を持つ抽象化をキャプチャすることになっています。ある瞬間に意味のあるコンポーネントとして表示されるのは、実際にはそれ自体に残された単一の責任である場合があります。その責任をコンポーネントに割り当てることができます。

これは私を混乱させます。クラスに変更する理由が1つしかない場合は、1つの責任があるように思われます。しかし、今はこれを狭すぎているようです。責任ベースのモデリングのコンテキストで、責任と変更する理由をどういうわけか説明できますか?クラスに3つ以上の責任があり、それでも変更する理由が1つある(またはその逆)ことができますか?

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

oop - コードエディタアプリケーションを適切に設計する

私は基本的にコードエディタである個人的なプロジェクトに取り組んでいます。[新規]、[開く]、[保存]、[名前を付けて保存]、[すべて保存]、[閉じる]、[すべて閉じる]のメニュー項目がある標準の[ファイル]メニューを想像してみてください。

私は適切なデザインにこだわっています。現在私は持っています:

  • ドキュメントを表すドキュメントクラス-コード編集コントロール、タブバーのそれぞれのタブ、およびキャプション、ファイル名、IsModifiedなどのさまざまなプロパティ。
  • 開いているすべてのドキュメントを表すDocumentsクラス。New、Open(FileName)、...などのメソッドが含まれています

問題は、どのクラス/メニューコマンドがどのタスクを担当しているかがわからないことです。

たとえば、[ファイル]->[新規]メニューコマンドは簡単です。Documents.Newを呼び出すだけです。

しかし、[ファイル]-> [開く]はどうですか?Documents.Openメソッドは、パラメーターとしてファイル名を想定しています。したがって、このメソッドを呼び出す前に、ファイル選択ダイアログを開き、ユーザーにファイルを選択させ、ファイルごとにDocuments.Open(FileName)を呼び出す必要があります。このサポートコードを配置するのに最適な場所は、メニューコマンドで、Documents.Openを書き直してそこに配置しますか?

保存アクションについても同じです。どちらが節約の責任がありますか?Document.Editor.SaveToFile(FileName)を使用するDocumentsクラスですか、それともDocumentクラスにSaveメソッドを作成する方がよいですか?途中のどこかで、ユーザーに現在のドキュメントを保存するかどうかを尋ねる必要もあります...

私は立ち往生しています。何か案は?

編集:プログラミング言語はDelphiです。

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

c# - MVVMデータグリッドのグループ化を担当するパターンの部分

私はMVVMパターンをいじくり回してきましたが、今はそれに基づいて小さなアプリケーションを実装しようとしています。

このアプリケーションには、驚くべきことに、いくつかのデータが表示されるデータグリッドがあります。今、私はそれにいくつかのグループ化機能を追加しようとしています。これをコード(C#およびXAML)で記述する方法は知っていますが、責任のあるコードをどのレイヤーに配置する必要があるのか​​疑問に思っています。

私の一部は、それがビューにあるべきだと言っています。なぜなら、それは特にその特定のビューのためのコードだからです。これは一般的ではなく、データをグループ化するという1つの目的を果たします。

一方、コマンドを使用してViewModelで処理する必要があると思います。ただし、ViewModelをView固有のロジックで汚染しているように感じます。

これに当てることができるリグはありますか?

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

domain-driven-design - サービスレイヤーまたはドメインオブジェクト自体とのインターフェイス?(DDD)

私はまだDDDについて学んでおり、次の2つの(おそらく単純な)質問があります。

ファクトリが新しいオブジェクト/グラフ/集約インスタンスを作成するだけでなく、リポジトリからオブジェクト/グラフを「再構成」する場合、次のようになります。

(1)サービスレイヤーの関数/ジョブ/タスク/作業単位はファクトリを呼び出しますか、それともエンティティインスタンスまたはDomainService関数の動作メソッドを呼び出しますか?これらのコンポーネントの責任に基づくコールスタックについては迷っています。

(2)エンティティインスタンスには、上記のような「動作メソッド」もありますか?たとえば、投稿p.UpdatePost(string bodyText)にはドメインモデルの問題があるのでしょうか、それともそうではないので、リポジトリでも同じことを実現する必要がありますか?または、サービスレイヤー関数、この場合はリポジトリを呼び出す必要があり、エンティティインスタンスには、永続性ではなくドメインに固有の動作メソッドが含まれているだけですか?しかし、それがユーザーの目標であるのに、なぜ「投稿の更新」がドメイン機能であるように聞こえるのでしょうか。

あなたは私がいたるところにいるのを見ることができます。助けてください。

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

model-view-controller - 設定を保存する責任を決定する (コントローラー、サービス、およびマッパー)

編集:

300@arcain に最初の報奨金を授与するのが遅かったので、再開します。そして、150@arcain にアディショナルを授与します。もちろん、誰かがさらに良い答えを提供しない限り。:)

/ 編集

次の形式を検討してください。

上記のテーブルの設定は、列が上記の列にマップされる DB テーブルに保存されます (明らかに最後の列は除きます)。

すべての (保存と削除) アクションは、ローカリゼーション コントローラーに直接送信されます。ローカリゼーション コントローラーは基本的に、次のように LocalizationService のメソッドを呼び出します。

その LocalizationService は、次のような LocaleMapperDb を呼び出します。

ただし、この設定を保存する責任は次のとおりです。

これは、site_settings という DB テーブルに保存されます。私はいくつかのオプションを考えました:

  • LocalizationController で SiteService / SiteSettingsService を使用します。ただし、完全なフォームは既に LocalizationService で生成および処理されています。
  • LocalizationService で SiteMapperDb / SiteSettingsMapperDb を使用し、updateCollection( $_POST ) で使用します。
  • LocaleMapperDb で SiteMapperDb / SiteSettingsMapperDb を使用する

最初と最後のオプションは最悪のオプションのように見えますが、よくわかりません。最良の選択肢は何だと思いますか? それとも、私が思いもよらなかった別の選択肢がありますか?

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

.net - .Netクラスライブラリ:スレッドの責任

私はクラスライブラリに取り組んでおり、クラスの1つがXDocument.Load(url)インターネットから使用してXmlファイルを取得する責任があります。この操作は完了するまでに数秒かかる可能性があるため、独自のスレッドで実行することは理にかなっています。

このスレッドを作成するのは誰の責任ですか?ファイルを取得するコンシューマーまたはクラス?これに関するベストプラクティスはありますか?

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

java - 他のメソッドのみを呼び出すクラス/メソッドにどのように名前を付けますか?

単一責任の原則に従い、次のクラスがあるとします。

ご覧のとおり、原則に従っており、クラス/メソッドのすべての名前がそれらの機能を示しています。今、このようなメソッドを持つ別のクラスがあります。

ご覧のとおり、「someMethod」メソッドは抽出、変換、および追加を呼び出します。私の質問は今、そのようなクラス/メソッドをどのように呼び出すのですか? 実際には抽出、変換、または追加していませんが、それらを呼び出していますか? その責任にちなんでメソッドに名前を付けるとしたら、それは何でしょうか?

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

c# - 関数の結果をキャッシュ/メモ化するのは誰の責任ですか?

私は、一連のインターフェイスを実装することでユーザーがシステムを拡張できるようにするソフトウェアに取り組んでいます。

私たちが行っていることの実行可能性をテストするために、私の会社は、ユーザーが行うのとまったく同じ方法でこれらのクラスにすべてのビジネス ロジックを実装することにより、「独自のドッグ フードを食べます」。

すべてを結び付け、拡張可能なクラスで定義されたロジックを使用するいくつかのユーティリティ クラス/メソッドがあります。


ユーザー定義関数の結果をキャッシュしたい。どこでこれを行う必要がありますか?

  • それはクラス自体ですか?これは、多くのコードの重複につながる可能性があるようです。

  • これらのクラスを使用するのはユーティリティ/エンジンですか? その場合、何も知らされていないユーザーがクラス関数を直接呼び出しても、キャッシュのメリットが得られない可能性があります。


サンプルコード

LetterUtilityはキャッシングを担当する必要がありますか? ILetterの個々のインスタンスはそれぞれ必要ですか? 他に完全にできることはありますか?

この例を短くしようとしているので、これらのサンプル関数はキャッシュを必要としません。しかし、(new C()).GetAnimalsThatStartWithMe()実行するたびに 10 秒かかるこのクラスを追加することを検討してください。

私は、ソフトウェアを可能な限り高速にすることと、維持するコードを減らすこと (この例では結果を にキャッシュすることLetterUtility) と、まったく同じ作業を何度も行うこと (この例では、 を使用するたびに 10 秒待機すること) の間で戦っていることに気づきましたC

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

c# - データアクセス層-保存を作成する責任があるべきクラスの設計

私は、ADO.NET 2.0とC#、SQL Server 2005を使用してデータアクセス層を設計しています。これらの呼び出しをどこに配置するかについて、頭の中でよく争っています。保守可能な堅牢なコードを作成するには、以下のどちらの方法に従う必要がありますか。

方法1

方法2

そして、私はコアデータアクセスを行うために以下のような別のクラスを使用します。以下のように

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

java - AndroidHelloWorldの応答

このスレッドの見出しがばかげていることは知っていますが、コードを修復できません。

私の問題は、エミュレーターでエラーが発生することです。プロセスが応答しないか、類似したものです。なぜ?!このアプリケーションはとても小さいのに、なぜそれが機能しないのですか?!私を助けてください。

編集