人柄は良いがビギナーレベル

育児とプログラミングに追われる毎日

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

この記事について

覚え書き

すでに実績のある構造をプログラマが使用することで、それをコードに結び付け、自ら証明できるようにするのである。

  • テストとはプログラムに誤りがないことの証明
  • モジュールを数学の公式と考えるのであれば冪等性が重要だと感じた

モジュールを再気的に小さな単位に分割できなくなること、それにより合理的な証明に欠かせない「分割統治」が使えなくなることを発見した。

  • モジュールを小さくする利点を知った
    • 小さくすることで合理的な証明ができるようになる
      • 証明する内容を明確にできる
      • 証明がシンプルになる
      • 重複のない証明になる

Dijkstraは「テストはバグが存在しないことではなく、バグが存在することを示すものである」と述べた。つまりテストによってプログラムが正しいくないことは証明できるが、プログラムが正しいことは証明できないのである。

  • テストは正しくないことを証明するものであるから、完成させるのではなく育て続けることが大事だと感じた
    • TDDについて振り返った
      • テストに期待する振る舞いを書くことは、正しさを証明するものと思っていた
      • テストケース(メソッド)は失敗することで正しくない証明を行なっている
      • モジュールに対する全てのテストケースをクリアすることで反証している
      • テストケースを増やすことで反証の精度を上げることができる
      • 増やし続けるだけではなく、合理的ではない証明は減らす必要がある
        • 重複したテストケースがあれば削除、モジュールの分割を検討する

まとめ

  • プログラミングのテストは正しさを証明するものではなく、正しくないことを証明している
  • TDDで重複を削除する際には合理的な証明を意識して重複を削除していきたい