TDD と使用者側の視点

TDD (or テストファースト) で学んだことの一つは、使用者側の視点から見ることは、作者側の視点から見る(考える)よりも、多くのことが感じられるってこと。あるいは、使用者側と作者側のギャップの大きさ。または、使用者側から考えることの、スムーズさ。ここで使用者側ってのは、クラスとかでいえば、クラスを使う側の視点。

TDD とかでは、(クラスとかの)実際のコードを書く前に、テストを書く。ただ、この考え方(実際のものがないのに実際に既にあるように考える)は、テスト以外の時にでも当てはまる現象だと思うし、TDD で学んだことの大きな点。

たとえば、テストケースを書くのが面倒なときにも、この考え方は有効だと思う。あるクラスのメソッドを書いているときに、そのメソッド内で使うことが自然なまだ書いていないクラスを、すでにあるものだとして使用する。

他には、Ant のタスクなんかを自作しているときにも応用できる。まず、Ant のタスクを書くんじゃなくて、build ファイルで、すでにそのタスクが存在するものとしてそのタスクを使用者の視点から使う。