それでは「単一責務の原則」について解説をしていきたいと思います。
1.1 単一責務の原則
SRP: Single Responsibility Principle
クラスの責務は1つにする
この原則は,基本的に「クラスの責務は1個にしようね」という原則です。あと別の切り口で言うと,「変更理由を1つにしましょう」というふうによく言われています
クラスの変更理由は1つでないといけない
「クラスの変更理由は1つでないといけない」といった感じでよく表現されます。単一責務なので,「1個のクラスに,1個のことだけをさせようね」という非常にシンプルな原則なのですけど,今回は,ここを深掘りして解説をしていきたいと思います。
意外とここを深堀していくと,ドメイン駆動開発の思想にもつながっていきますし,オブジェクトをどうやって上手く分割していくか,というところのヒントだったり,答えだったりというのが,ここにあるのではないかという風に私は思います。
「.NETのエンタープライズアプリケーションアーキテクチャ」という本が黒い本があるのですけど,その中のこの「単一責務の原則」の中では,こういう出だしで書かれています。
「クラスが大きく成長し,多くのメソッドを持つようになったら,責務の数が多すぎる可能性がある,理想の責務の数はたった1つ」ということで,要するに責務の数を1個にしましょうねということなのですが,これからその辺りを詳しく見ていきましょう。
■非公開コース「C#14新機能」プレゼント:
非公開コース「C#14新機能」(80分)をご覧になりたい方は
こちらからURLとパスワードを発行していますので、ご覧になってみてください。
非公開コース「C#14新機能」を観る
A01_はじめに
A02_プロジェクトの作成
B01_配列とは
B02_配列の生成とアクセス
B03_生成と同時に値を設定する
B04_型推論による生成
B05_メソッドの引数などにする場合の注意点
B06_Length
B07_IndexOfでの検索
B08_FindIndexでの検索
B09_Find
B10_Exists
B11_FindAllとFindLast
B12_誤ったコピー
B13_Array.Copy
B14_範囲指定のコピー
B15_Resize
C01_ArrayList
C02_List
C03_List 動的な要素の変更
C04_Listのコンストラクタ
C05_Listのコンストラクタ_Capacity
C06_ListTからArrayクラスのメソッドが呼ばれている
D01_コレクションインタフェースとは
D02_異なるコレクションクラスに互換性を持たせる
D03_インタフェースの階層構造
D04_クライアントができる操作を制限させる
D05_クライアントができる操作を制限させる_後半
D06_Enumerableの拡張メソッドに関して
D07_ReadOnly系のコレクションインタフェース
D08_AsReadOnly
D09_ToListでコピーする
D10_ListTはprivateで使う
■非公開コース「C#14新機能」プレゼント:
非公開コース「C#14新機能」(80分)をご覧になりたい方は
こちらからURLとパスワードを発行していますので、ご覧になってみてください。
非公開コース「C#14新機能」を観る