【要約】【社内勉強会】10分でわかる『良いコード/悪いコードで学ぶ設計入門』 [Qiita_Trend] | Summary by TechDistill
> Source: Qiita_Trend
Execute Primary Source
// Problem
開発者が「動くコード」は書けても、変更に強い「設計」を行えないという課題がある。コードの品質が低いと、システムの保守コストが指数関数的に増大する。具体的には以下の問題が発生する。
- ・データと処理が分離し、ビジネスルールが複数の箇所に散在する。
- ・if/elseによる条件分岐が増え続け、機能追加時に既存ロジックを破壊する。
- ・変数名や型が曖昧で、コードの意図を理解するために過度な読み解きを要する。
// Approach
著者は、設計の質を向上させるために、ルールや判断を「データを持つ側」へ寄せるアプローチを推奨している。具体的には以下の3つの手法を提示している。
- ・カプセル化の徹底:データとそれに関連するルールを同一クラスに集約し、凝集度を高める。
- ・ストラテジパターンの適用:増え続ける条件分岐を個別のクラスに切り出し、拡張性を確保する。
- ・目的ベースの命名と型活用:変数名に意図を持たせ、Enum等を用いて不正な状態を型で防ぐ。
// Result
これらの設計手法を適用することで、変更に強く、意図が明確なコードを実現できる。設計の改善により、以下の効果が得られる。
- ・修正箇所が1箇所に閉じ、仕様変更時の影響範囲を最小化できる。
- ・既存のコードを修正せずに、新しい振る舞い(クラス)を追加できる。
- ・コメントに頼らず、名前と型だけでコードの仕様を直感的に理解できる。
Senior Engineer Insight
> 本記事が指摘する「データと処理の分離」は、ドメインモデルが貧血化する典型的なパターンである。大規模開発では、この状態が技術負債として蓄積し、変更コストを爆発させる。ストラテジパターンの導入によるOCPの遵守は、CI/CD環境下での回帰テストの範囲を限定するためにも極めて重要だ。単なる「綺麗なコード」の追求ではなく、変更の局所化と、型による制約を用いた「ミスが起きにくい構造」の構築こそが、プロフェッショナルの設計である。