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