🔖

プログラム学習

2023/10/07に公開

良いソフトウェアの定義

  1. 保守性が優れている

    • コードの変更や修正が容易である。
    • テストが整備されており、リファクタリングが安全に行える。
  2. 拡張性がある

    • 新機能の追加が容易で、既存のコードに影響を与えない。
    • 設計が柔軟であり、新しい要件に適応しやすい。
  3. 可読性が高い(認知負荷が低い)

    • コードの意図が明確で、他の開発者が簡単に理解できる。
    • 命名、コメント、フォーマットが統一されている。

達人の特徴

  1. 適切なアーキテクチャを選定できる

    • プロジェクトの要件に応じたアーキテクチャを設計し、導入できる。
  2. 引き出しをいっぱい持っている

    • 豊富な知識と経験を基に、問題解決のための多様なアプローチを持つ。
  3. 良いコードと悪いコードの違いを言語化できている

    • 理論だけでなく、実際のコード例を挙げて説明できる。

前提

  1. 現代における「プログラミング」はコードを手続的に書くだけではない。

    • 手続きと構造を理解しなければ、良いコードは書けない。
  2. 手続きを知るには以下を学ぶ:

    • 数学
    • アルゴリズム
  3. 構造を知るには以下を学ぶ:

  • 現代において「プログラミング」というのはコードを手続的に書くことだけではない。手続きと構造を理解しなければ、コードは書けない
  • 手続きを知るには、数学、アルゴリズムを学ぶ
  • 構造を知るには、これから紹介することを学ぶ

https://github.com/bamboo-house/Good-Code


1. 凝集度・結合度(文・式・関数レベル)


2. SOLID原則・デザインパターン(ファイルレベル/クラス)


3. アーキテクチャ(フォルダレベル)

三層アーキテクチャ

  • プレゼンテーション層、アプリケーション層、データ層に分割。

レイヤードアーキテクチャ

  • 各層が独立しており、明確な責務を持つ。

クリーンアーキテクチャ


その他

GoFデザインパターン

ActiveRecordの位置付けやPoEAA

モデリング・設計

Discussion