背景
既にざっと1周読んだが、じっくりと2周目を読んだので、
参考になった部分をメモした。
目次
- 背景
- 目次
- 設計とはソフトウェア全体をすっきりした形に整えること
- 設計の最終アウトプットはソースコード
- 目的ごとにローカル変数を用意する
- 特定の関心事に特化した小さなクラスが、コードの見通しを良くし、変更をやりやすくする
- 業務を理解するために要求を分析し、そこで発見した関心事の単位を、そのままプログラム単位としてクラスで表現する
- 値を扱うための専用クラスを作る
- オブジェクトを外部に渡す際は変更不可な状態にして渡すこと
- 複文を単文に分けてelse句を無くす
- 区分ごとに別クラスを作り、インターフェースを使って同じ型として扱えるようにする
- クラス間の結びつきは、知らないことが少ないほど弱くなる
- 共通機能ライブラリは失敗しやすい
- コードを重複させない設計の基本は、インスタンス変数を返すだけのgetterを作らないこと
- 変だと気が付いたら、TO-DOとしてコメントを残す
- メソッドは必ずインスタンス変数を使う
- ドメインモデルは対象業務をオブジェクトの集合として表現する技法
- 機能中心にプログラムを書くと、プログラムが処理の順番に依存する
- 業務の関心事はヒト、モノ、コトに分類する
- コトはヒトとモノとの関係として出現する
- 状態に依存する場合、使う側が事前に確認する
- 値がない場合に別の値で埋めるようなNULL逃れをしない
- データベースには正しいデータのみを記録し、それを担保するのが設計の基本目的
- 記録のタイミングが異なるデータはテーブルを分ける
- カラムの追加はテーブルを追加する
- 画面に引きずられた設計はソフトウェアの設計を大変にする
- 何でもできる汎用画面ではなく、用途ごとのシンプルな画面に分ける
- 画面の表示ロジックと業務ロジックを分離する
- 画面をタスクベースに分解する
- 画面の関心事とクラス設計を一致させる
- 画面デザインの4原則
- 画面以外の利用者向け情報もソフトウェアと整合させる