理解容易性
保守性の観点の1つとして重視
理解用意性は「理解しやすさ」であるが、意味を掘り下げると「思考する量」と言い換えることができる
以下の7点を担保されていると良い
名称:わかりやすくする
役割:1つにする
参照:狭くする
状態:変えられなくする
面積:小さくする
階層:浅くする
秩序:揃える
2つの観点を見る
識別子
変数や関数などを他と区別するための名称や記号
区画
関数やクラスなどのコードのまとまり
識別子
名称
曖昧から明瞭にする。
例
命名規則の準拠
適切な英語の使用
省略名をやめる
マジックナンバーの不使用
説明変数・関数を使う
Enum 型の使用
名称と内容を一致させる
アノテーションコメントの利用
役割
複数から単一にする
例
単一責任の準拠(SOLID原則)
モジュール分割
関心(役割)の分離
値オブジェクトの利用
モジュールの擬集度の制御
インターフェース分離の原則(SOLID原則)
コマンド・クエリ分離の原則
状態
可変から不変にする
例
定数の利用(const や readonly で制限する)
普遍オブジェクトの利用
値オブジェクトの利用
継承の禁止
オーバーライドの禁止
参照
広域から局所にする
例
モジュールの疎結合度
値のスコープを狭くする
外部との副作用をもたな関数やクラスに転換する
クラスが持つフィールドなどを直接参照させない
必要な処理のみ公開する
区画
面積
拡大ではなく狭小とする
例
重複の除去(DRY原則)
関数の抽出
デッドコードの除去
不使用コードの除去(YAGNI)
null の不使用
値オブジェクトの利用
3項演算子の利用
古いコメント・冗長コメント・コメントアウトの除去
パラメータオブジェクトの利用(データクラスの利用)
説明変数・関数の利用
階層
多層ではなく単層とする
例
早期リターン
関数の抽出(ネストをやめる)
配列・リスト操作関数への置換(ネストをやめる)
秩序
雑然ではなく整然とする
例
簡潔に単純にする(KISS原則)
コーディングスタイルの準拠
段落わけ
関数の抽出
高擬集化
カプセル化
対称性
インフラ・ドメインの分離
粒度の統一
参考