🔖
Good Code ~ 技術的負債に向かう ~
良いソフトウェアの定義
-
保守性が優れている
- コードの変更や修正が容易である。
- テストが整備されており、リファクタリングが安全に行える。
-
拡張性がある
- 新機能の追加が容易で、既存のコードに影響を与えない。
- 設計が柔軟であり、新しい要件に適応しやすい。
-
可読性が高い(認知負荷が低い)
- コードの意図が明確で、他の開発者が簡単に理解できる。
- 命名、コメント、フォーマットが統一されている。
達人の特徴
-
適切なアーキテクチャを選定できる
- プロジェクトの要件に応じたアーキテクチャを設計し、導入できる。
-
引き出しをいっぱい持っている
- 豊富な知識と経験を基に、問題解決のための多様なアプローチを持つ。
-
良いコードと悪いコードの違いを言語化できている
- 理論だけでなく、実際のコード例を挙げて説明できる。
前提
-
現代における「プログラミング」はコードを手続的に書くだけではない。
- 手続きと構造を理解しなければ、良いコードは書けない。
-
手続きを知るには以下を学ぶ:
- 数学
- アルゴリズム
-
構造を知るにはこれから紹介するものを学ぶ:
1. 凝集度・結合度(文・式・関数レベル)
- 参考資料:
2. SOLID原則・デザインパターン(ファイルレベル/クラス)
3. アーキテクチャ(フォルダレベル)
三層アーキテクチャ
- プレゼンテーション層、アプリケーション層、データ層に分割。
レイヤードアーキテクチャ
- 各層が独立しており、明確な責務を持つ。
クリーンアーキテクチャ
-
ビジネスロジックを中心に据え、外部依存を排除する。
-
参考資料:
- “1つの独立して動く要素”の内部を整理し直す
- リバーシで学ぶアプリケーション設計入門〜仕様の整理からTypeScriptでの実装 (Udemy)
-
Clean Architecture 達人に学ぶソフトウェアの構造と設計
- アーキテクチャレベルのSOLID原則も解説している
Discussion