3

Java Webアプリケーションでいくつかのサービスレイヤークラスをリファクタリングした後、私は、単一責任原則(SRP)の順守をやめ、コードの保守性と可読性を維持することが合理的であると自問していました。今、私はこの問題に関するあなたの経験についてあなたに尋ねています。

例:

次のことを行うUserManagerクラスを想定します。

  1. データベースからユーザーを検索します
  2. 新しいユーザーを作成します
  3. 既存のユーザーを操作します

ケースA:これら3つの責任はすべて、タスクを実行するいくつかの方法で構成されています。

→3つのクラスに分けられるのは明らかだろう。

ケースB:これら3つの責任はすべて、1つの方法のみで構成されています。

この場合、あなたは何を提案しますか?これを3つの小さなクラスに分割するか、UserManagerクラスに残す必要がありますか?

4

1 に答える 1

4

私の意見では、OOPに関連するSRPは、特定のオブジェクトまたはエンティティに関連する状態と動作がすべて単一のクラス内にある必要があることを意味します。したがって、私の意見では、特定のタスクを実行するために必要なメソッドの数や数に関係なく、ユーザーに関連するすべてのメソッドを1つのクラスに保持する必要があります。

SRPのポイントは(私が見ているように)、ドメインオブジェクトが相互に操作していないことを確認することです。言い換えると、(仮に)という別のクラスがAccountManagerある場合、そのクラスには、オブジェクトを直接操作する操作を含めるべきではありませんUser。これは、SRPに違反するためです。むしろ、クラスは、すべてのユーザー操作を処理するためにクラスAccountManagerに依存する必要があります。UserManager

于 2011-07-29T14:56:39.503 に答える