【プログラミング学習】現場で役立つシステム設計の原則〜変更を楽で安全にするオブジェクト指向の実践技法
記事更新日:2022-08-31
![サムネイル](https://tsukiusagi.biz/wp-content/uploads/2022/01/css.png)
設計って
なんだろう
「設計とは何か」が、とてもわかりやすい本でした
設計とは何か
プログラミングでの「設計」の意味とは
- どこにロジックを書くかを考えること
- どこにロジックがあるかをわかりやすくすること
![](https://i0.wp.com/tsukiusagi.biz/wp-content/uploads/2022/01/rabbit3.png?resize=150%2C150&ssl=1)
つまり。コードを整理整頓すること
![](https://i0.wp.com/tsukiusagi.biz/wp-content/uploads/2022/01/rabbit1-2.png?resize=150%2C150&ssl=1)
設計は、「整理整頓」・・・
それを整理するのが設計
![](https://i0.wp.com/tsukiusagi.biz/wp-content/uploads/2022/04/rabbit4-2-1.png?resize=150%2C150&ssl=1)
どこに置くかといえば、クラス(オブジェクト)の中
ロジック置き場を作るためのオブジェクト指向
オブジェクト指向とは
ロジックがどこに書いてあるかを見つけやすくするために、業務をクラス(オブジェクト)で表現する設計手法
![](https://i0.wp.com/tsukiusagi.biz/wp-content/uploads/2022/01/rabbit3.png?resize=150%2C150&ssl=1)
つまり。業務上のルールをそのまま「クラス(オブジェクト)」にする
![](https://i0.wp.com/tsukiusagi.biz/wp-content/uploads/2022/01/rabbit1-2.png?resize=150%2C150&ssl=1)
設計は、業務をクラスにする・・・
オブジェクトにすることを
「ドメインオブジェクト」と呼ぶ
![](https://i0.wp.com/tsukiusagi.biz/wp-content/uploads/2022/04/rabbit4-2-1.png?resize=150%2C150&ssl=1)
どんなクラスにするかが重要
ルールすべてを扱う大きなクラスは、考えない
現場で役立つシステム設計の原則
目指すは、小さなクラス
『「短いメソッド」の入った「小さなクラス」』の集まりが、クラス
↓たとえば・・・
- 値オブジェクト
- 値を扱うクラス
- 例)Period(期間:開始日+終了日)
- コレクションオブジェクト
- コレクションを1つだけ持つクラス
![](https://i0.wp.com/tsukiusagi.biz/wp-content/uploads/2022/01/rabbit3.png?resize=150%2C150&ssl=1)
メソッドとは、ロジック置き場のこと
小さな置き場がたくさんある、小さなクラスを作る
![](https://i0.wp.com/tsukiusagi.biz/wp-content/uploads/2022/01/rabbit1-2.png?resize=150%2C150&ssl=1)
設計は、小さなロジック置き場を作る・・・
![](https://i0.wp.com/tsukiusagi.biz/wp-content/uploads/2022/04/rabbit4-2-1.png?resize=150%2C150&ssl=1)
どのクラスに置くかも重要
データとロジックを一体にする設計を徹底する
現場で役立つシステム設計の原則
ロジック置き場は、データを保持するクラスの中
データをgetするときは「計算後のデータ」をgetする。
getしてから、別の場所で計算をさせない
![](https://i0.wp.com/tsukiusagi.biz/wp-content/uploads/2022/01/rabbit3.png?resize=150%2C150&ssl=1)
データのある場所が、ロジックのある場所
![](https://i0.wp.com/tsukiusagi.biz/wp-content/uploads/2022/01/rabbit1-2.png?resize=150%2C150&ssl=1)
設計は、データとロジックを分離しない・・・
「小さくて短い」置き場
データ保持クラスにロジックを置く
![](https://i0.wp.com/tsukiusagi.biz/wp-content/uploads/2022/04/rabbit4-2-1.png?resize=150%2C150&ssl=1)
そのためには、業務の分析が欠かせない
要件を理解し整理する分析作業も、設計やプログラミングをする人がやるべき
現場で役立つシステム設計の原則
分析と設計は同時
- 分析
- 人間のやりたいことを正しく理解すること
- 業務内容のヒアリング
- 設計
- 人間のやりたいことの実現方法を考えること
- クラスの発見
![](https://i0.wp.com/tsukiusagi.biz/wp-content/uploads/2022/01/rabbit3.png?resize=150%2C150&ssl=1)
「クラスの発見」とは、「データ&ロジックのまとまり」を見つけること
![](https://i0.wp.com/tsukiusagi.biz/wp-content/uploads/2022/01/rabbit1-2.png?resize=150%2C150&ssl=1)
設計は、ヒアリングしながらクラスを発見する・・・
![](https://i0.wp.com/tsukiusagi.biz/wp-content/uploads/2022/04/rabbit4-2-1.png?resize=150%2C150&ssl=1)
クラスの発見は、かなり難しい
良い設計は最初からは手に入らない
現場で役立つシステム設計の原則
良い設計とは
「良い・悪い」は単純に、「目的を果たせているか・いないか」
設計の目的:修正を楽で安全にすること
![](https://i0.wp.com/tsukiusagi.biz/wp-content/uploads/2022/01/rabbit3.png?resize=150%2C150&ssl=1)
コード修正のときにラクだと感じたら、良い設計
![](https://i0.wp.com/tsukiusagi.biz/wp-content/uploads/2022/01/rabbit1-2.png?resize=150%2C150&ssl=1)
設計は、修正を楽で安全にする・・・
まとめ:オブジェクト指向で設計をするとは
オブジェクト指向で設計すると、こうなる
「プログラムの構造」と「業務の構造」が一致する
ソースコードで「業務マニュアル」を作るような感覚
- 設計とは、コードを整理整頓すること
- オブジェクト指向は、業務ルールをそのままクラスにする
- 小さなロジック置き場を作る
- データを保持するクラスに、ロジックも置く
- ヒアリングしながらクラスを発見する
- 修正がラクだと感じたら良い設計
![](https://i0.wp.com/tsukiusagi.biz/wp-content/uploads/2022/01/rabbit1-2.png?resize=150%2C150&ssl=1)
設計のイメージがわいてきた
![](https://i0.wp.com/tsukiusagi.biz/wp-content/uploads/2022/01/rabbit3.png?resize=150%2C150&ssl=1)
オブジェクト指向についてはこちらも
2022-08-31
編集後記:
この記事の内容がベストではないかもしれません。