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

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

Clean Architecture 第5章 オブジェクト指向プログラミング

この記事について

覚え書き

優れたアーキテクチャの基本となるのは「オブジェクト指向設計」の原則の理解と適用である。

-

C言語で完ぺきに実現できていたカプセル化を弱体化させてしまっているのである。

  • オブジェクト指向で書ける言語の中でもプロパティを公開できたり、Setterのようなアクセサを作成できたりカプセル化は強制されていないことを知った

OOとは「ポリモーフィズムを使用することで、システムにあるすべてのソースコードの依存関係を絶対的に制御する能力」である

  • ポリモーフィズムを使用することでインターフェイスと実装を分けることができる
    • 分けることで制御(呼び出す)側と実装(呼び出される)側の依存関係を切り離すことができる
    • 依存関係を切り離すことができるようになることから、依存関係の制御が可能になる

まとめ

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

この記事について

覚え書き

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

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

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

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

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

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

まとめ

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

はじめまして

自己紹介

30代後半、育児とプログラミングに追われる日々を過ごしてます

転職活動でスキル不足を自覚したことをきっかけに学び直すブログです

転職活動で何が起きた?

子供の出産を機に在宅で働ける環境はないか転職活動を開始

面接にてオブジェクト指向や設計について質問されるが回答できず

「人柄は良いがビギナーレベル」の称号をいただく

30代になるとマネジメント経験の需要を多く感じる

がマネジメント経験なし

オブジェクト指向、設計についての知識もなし

自分の需要なし

やばい

なぜこうなった?

  • スキルと給与は紐づかないと思って学習することを軽視していた
    • 担当タスクをどれだけ早く消化できるかが給与に反映されることが多かった
    • 見やすくて早く得られる結果を優先してきた
    • 社内の論調を重視していて一般的なあるべき論を無視していた
  • 日々のタスクをこなす事でいっぱい
    • 自分の担当タスクを消化して終わり
    • 点々と知識はついたが繋がっていない

これから

  • どのような、どのようにシステムを開発すれば良いか言語化できるようになりたい