9 プラクティス5 「CLEAN」なコードを作る
9.1 高品質なコードは凝集性が高い
内容
良いソフトウェアの土台となる5つのコード品質を表す「CLEAN」を紹介。
- Cohesive (凝集性)
- Loosely Coupled (疎結合)
- Encapsulated (カプセル化)
- Assertive (断定的)
- Non redundant (非冗長)
Cohesive (凝集性)
高品質なコードは何よりもまず凝集性が高い。
凝集性とは部品がどれだけ1つのことだけを扱うようにできているか。
SOLID原則の「単一責務の原則」がどれだけ適用されているかということでもある。
凝集性を高くするための方法としてオブジェクト指向が用いられ、基本的な部品の単位をクラス(概念)となる。
ソフトウェアのコードは結局のところ言語的活動であるため、これらの部品が「何」を扱い「どんなふるまい」があるかを表すネーミングは非常に重要。表していることが明確でないと意味不明で読めないから。
「人」のように「会話」や「食べる」「歩行」「手がある」などさまざまなふるまいや性質を持っている複雑なものは、それぞれの要素を分解しそれぞれが凝集性が高い小さな部品とする。それらの部品を持つように構成させる。
また、オブジェクト指向言語のトレースの仕方の話になるが、構造化プログラミングのようにコードを上から下に読むだけでは読むことができない。
オブジェクト指向のオブジェクトはhas-a関係、親子関係が階層になっており、純粋に処理を順番に読もうとすると、親クラスと子クラスをいったり来たりして読みづらい。
基本的な読み方のスタンスとしては、その階層だけで処理を読み、具体的に知りたい場合は必要に応じて子クラスの詳細を読むようにする。
そうすることで、文脈のレベルが保たれ、読みやすくなる。
学び
特になし
学びを活かすアイディア・行動
- 今の所特になし