Help us understand the problem. What is going on with this article?

Clean Architecture 第3章, 第4章のまとめ

Clean Architecture 第3章, 第4章のまとめ

by ohakutsu
1 / 13

これはなに

Clean Architectureを読んで自分なりにまとめたものです。


第II部 構成要素から始めよ: プログラミングパラダイム

  • プログラミングには様々な革命が起きてきた
  • その中でも重要なのは、プログラミングパラダイムの革命
    • パラダイム
      • プログラミングの方法のこと
      • 言語とは比較的関係のないもの
    • パラダイムは、どのプログラミング構造を使うべきか、いつ使うべきかを教えてくれる
    • 現在、パラダイムは3つ存在している

第3章 パラダイムの概要

3つのパラダイム

  • 構造化プログラミング
  • オブジェクト指向プログラミング
  • 関数型プログラミング

構造化プログラミング

  • 制限のないジャンプ(goto文)🙅
    • if / then / else や do / while/ until などの構文に置き換えた

構造化プログラミングは、直接的な制御の移行に規律を課すものである。


オブジェクト指向プログラミング

  • コンストラクタ、インスタンス変数、メソッド、ポリモーフィズムの発見

オブジェクト指向プログラミングは、間接的な制御の移行に規律を課すものである。


関数型プログラミング

  • 代入をすることを制限→不変

関数型プログラミングは、代入に規律を課すものである。


考えるべきこと

  • 3つのプログラミングパラダイムは、プログラマから能力を"削除"している
    • 何をすべきかを教えてくれるわけではない
    • 何をすべきでないかを教えてくれている

まとめ

  • これらの3つが、アーキテクチャの大きな関心事に対応している
    • コンポーネントの分離
    • データ管理
    • 機能

第4章 構造化プログラミング

  • モジュールやコンポーネントなど、機能ごとに分割するのがベストプラクティスである

数学と科学の証明

  • 数学
    • 真であることを証明する
  • 科学
    • 真でないことを証明する
    • 反証

テスト

  • テストはバグが存在しないことではなく、バグが存在することを示すものである
    • テストによって正しくないことは証明できる
    • どれだけ最善を尽くしても、正しくないことを証明できない → 正しいとする
      • 科学的証明

goto文は反証することができない


まとめ

  • 構造化プログラミングの価値を高めるのは、反証可能なプログラミングの単位を作成する能力
  • ソフトウェアアーキテクトは、簡単に反証できるモジュール、コンポーネントなどを定義しようとする
  • アーキテクチャレベルで、機能分割するのがベストプラクティスと考えられている
ohakutsu
20卒のWebエンジニア
https://ohakutsu.com/
increments
「エンジニアを最高に幸せにする」ために Qiita、Qiita Team、Qiita Jobs を開発・運営しています。
https://increments.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away