Robert C. Martin先生のCleanCode第8章を読んだメモ。

境界(第8章)の概要

  • サードバーティーのコードを使用する
    • Mapとかを利用して不要なメソッドを提供するなどをやめよう。
    • ラップしてインターフェース境界を隠そう
    • インターフェース境界を使うならクラスの中だけ、あるいは、いくつかの強い関連を持ったクラス内での利用に止めよう。
    • 公開APIでこれらを返したり引数で受け取らない。。
  • 境界の調査と学習
    • 学習テスト(サードパーティーのテストコード)を書いた方が良い
    • 実装しているアプリケーションの中での使い方がわかる
    • サードパーティーのコードの利用方法がわかるので独自でカプセル化することもできるようになるため。
  • 学習テストはタダ以上のもの
    • 将来的にサードパーティーが更新されたとしても壊れるかどうかが確認できるようになる。
    • 学習テストでなくとも、外部との接続テスト(インターフェースを製品のコードと同じように使用してみること)によって、外部との明確な境界を担保すべき。
  • まだ存在しないコードを使用する。
    • ストラテジパターンを使え
  • 綺麗な境界
    • サードパーティーを利用しているコードをビジネスルールに持たせない。
    • 自分たちが制御できないものではなく、自分たちが制御できるものに依存した方が良い。
    • Mapでラップしたりアダプタパターンなどを利用する。
    • これらによりサードパーティーコードの変更による影響点を最小化する。

感じたこと

この章と、前の前の章で言われているデータ構造などの概念を掘り下げたものが、CleanArchtectureへとつながっていくんだなと思った。
というか、掘り下げていくと必然的にCleanArchitectureのような形になりそう
学習テストはコストが結構でかめだなと思った。
詳細であるサードパーティーのコードのテストよりも、学習テストよりも外部との接続テストぐらいにとどめた方が有用では?とは思った。(ただしチーム内で使い方の共有ができると行った面では有用性は確かにあると思う。)