0

重複の可能性:
単一責任の原則は検証にとって何を意味するのか

ケース A: オブジェクトを検証 -> メソッドに送信 -> メソッドは有効なオブジェクトを想定 -> メソッドを実行
ケース B: メソッドに送信 -> メソッドはオブジェクトの有効性をチェック -> メソッドは有効な場合のみ実行

ケース A では、メソッドに 1 つのタスク (実行) を担当させることができます。ただし、誤って無効なオブジェクトを渡す場合があります。(もちろん、慎重なコーディングでこれを防ぐことができますが、これが私の質問の核心です...)

ケース B では、メソッドが無効なオブジェクトに対して実行されることはありませんが、コードの実行だけでなくオブジェクトの検証も行う必要があります。これは「単一責任」違反ではないでしょうか。

ありがとう!

4

1 に答える 1

1

最良のコーディング プラクティスは次のようになります。

ケース C : オブジェクトは構築によって有効であり、無効なインスタンスを構築することは不可能であり、すべてのメソッドは有効な状態で呼び出されると有効な状態に遷移します。

この場合、オブジェクト自体がその有効性に責任を負い、追加のチェックは、オブジェクトがその保証を満たしていない場合に備えてフェールファストとして機能します。


たとえば、リンクされたリストを使用すると、リストが整形式であるかどうかをパサーとレシーバーにチェックさせることができますが、それぞれが多数存在する可能性があるため、必然的に作業が重複することになります。

リンクされたリスト自体がそれ自体の有効性に責任があるため、その作成/追加/削除/連結/コピー操作のすべてが有効性を維持する場合、関与するクラスは 1 つだけであり、private への特権アクセスを持っているため、ジョブがより簡単になります。

于 2012-11-10T04:47:04.430 に答える