これはなに
Clean Architectureを読んで自分なりにまとめたものです。
第II部 構成要素から始めよ: プログラミングパラダイム
- プログラミングには様々な革命が起きてきた
- その中でも重要なのは、プログラミングパラダイムの革命
- パラダイム
- プログラミングの方法のこと
- 言語とは比較的関係のないもの
- パラダイムは、どのプログラミング構造を使うべきか、いつ使うべきかを教えてくれる
- 現在、パラダイムは3つ存在している
- パラダイム
第3章 パラダイムの概要
3つのパラダイム
- 構造化プログラミング
- オブジェクト指向プログラミング
- 関数型プログラミング
構造化プログラミング
- 制限のないジャンプ(goto文)🙅
- if / then / else や do / while/ until などの構文に置き換えた
↓
構造化プログラミングは、直接的な制御の移行に規律を課すものである。
オブジェクト指向プログラミング
- コンストラクタ、インスタンス変数、メソッド、ポリモーフィズムの発見
↓
オブジェクト指向プログラミングは、間接的な制御の移行に規律を課すものである。
関数型プログラミング
- 代入をすることを制限→不変
↓
関数型プログラミングは、代入に規律を課すものである。
考えるべきこと
- 3つのプログラミングパラダイムは、プログラマから能力を"削除"している
- 何をすべきかを教えてくれるわけではない
- 何をすべきでないかを教えてくれている
まとめ
- これらの3つが、アーキテクチャの大きな関心事に対応している
- コンポーネントの分離
- データ管理
- 機能
第4章 構造化プログラミング
- モジュールやコンポーネントなど、機能ごとに分割するのがベストプラクティスである
数学と科学の証明
- 数学
- 真であることを証明する
- 科学
- 真でないことを証明する
- 反証
テスト
- テストはバグが存在しないことではなく、バグが存在することを示すものである
- テストによって正しくないことは証明できる
- どれだけ最善を尽くしても、正しくないことを証明できない → 正しいとする
- 科学的証明
goto文は反証することができない
まとめ
- 構造化プログラミングの価値を高めるのは、反証可能なプログラミングの単位を作成する能力
- ソフトウェアアーキテクトは、簡単に反証できるモジュール、コンポーネントなどを定義しようとする
- アーキテクチャレベルで、機能分割するのがベストプラクティスと考えられている