Clean Craftsmanshipを引き続き読んでいる。3章のTDD応用の話から。

TDDは、実装する必要のある物事を、段階的かつ滑らかに、小さな実装の連続として分解していくためのアルゴリズムとして有用である、的なことを言いたいように思える。

xUnit Patterns (2007) によりテストダブルと定義付けられたもの……には

  • ダミー
  • スタブ
  • スパイ
  • モック
  • フェイク

がある。いつもどれがどれか思い出せずにいたのだが (というか名前を知らないが機能は使っている状態だった)、どうやら継承関係があるらしい。

モック < スパイ < スタブ < ダミー < テストダブル
フェイク < テストダブル

テスト対象によっては、テストパターンを追加しても条件を絞り込めないものがある。その例として、sin関数の例が紹介されていた。確かに、sin(0) をテストしたからといって何か仕組みが明らかになっていく感じがしない。

My YouTube channel reached out 400 subs :tada:

Ruby向けにNode.js製のLanguage Serverでリッチな編集体験を提供するのは諦めて、結局RubyでLanguage Serverを実装することにした。