Clean Code
ソフトウェア設計 原則 、保守性 と拡張性 の高 いコードを書 くために。
SOLID 原則
Single Responsibility Principle (単一責任)
クラスは単一 の責任 または変更 理由 のみを持 つべき。
コアコンセプト:
- 各 クラスは一 つのことだけを担当
- 単一 機能 に集中
- 単一 クラスに複数 機能 を実装 しない
例 : ユーザーデータを処理 するクラスは、同時 にデータベース接続 を処理 すべきではない。
Open/Closed Principle (開放閉鎖)
ソフトウェア実体 は拡張 に対 して開 いており、修正 に対 して閉 じているべき。
コアコンセプト:
- 既存 コードを修正 せず拡張 で新機能 を実現
- interface/abstract/extends で機能 を拡張
- 既存 コードを継承 ・実装 する新 しいクラスを設計
Liskov Substitution Principle (リスコフの置換)
サブクラスは親 クラスを置換 しても正確性 に影響 しない。
コアコンセプト:
- サブクラスは親 クラスの動作 を変更 しない
- 置換 後 もシステム動作 は一貫
- 継承 関係 の正確性 を確保
Interface Segregation Principle (インターフェース分離)
クラスは使用 しないインターフェースメソッドの実装 を強制 されるべきではない。
コアコンセプト:
- 大 きなインターフェースをより小 さく専門的 なものに分割
- クラスは本当 に必要 なインターフェースのみ実装
- 肥大化 したインターフェース設計 を避 ける
Dependency Inversion Principle (依存性逆転)
上位 モジュールは下位 モジュールに依存 すべきではなく、両者 とも抽象 に依存 すべき。
コアコンセプト:
- 具体的 な実装 ではなく抽象 に依存
- システムの結合度 を削減
- 柔軟性 と保守性 を向上
F.I.R.S.T テスト原則
良 い単体 テストを書 くための五 つの原則 :
| 原則 | 説明 |
|---|---|
| Fast (高速 ) | テストは高速 に実行 されるべき |
| Independent (独立 ) | テスト間 で相互 依存 があってはならない |
| Repeatable (再現可能 ) | どの環境 でも繰 り返 し実行 可能 |
| Self-Validating (自己検証 ) | テストレポートは成功 か失敗 を明確 に表示 |
| Timely (適時 ) | 本番 コードを書 く前 にテストを書 く (TDD) |
KISS 原則
Keep It Simple, Stupid
シンプルに保 ち、不必要 な複雑 さを避 ける。
コアコンセプト:
- シンプルな解決策 が複雑 な解決策 より優 れている
- 過剰 設計 を避 ける
- 可読性 を優先