udon's blog

思いついたことを、思いついた時に。忘れないように。

TDDのデメリットってなんだろう?

いやー怖いタイトルw

は、いいとして。純粋に「何があるんだろう?」と思ったりしたのでメモ程度に書いてみる。

ことの始まり

最近 組み込みTDD本 を読んだり勉強会したり同僚に薦めたりする中で、奇特にもこの本を買ってくれた同僚に言われた一言

この本ってTDDのデメリット書いてないっすね

まだこの本をちゃんと読み切れてないけど、慌てて章構成だけ見直し。 で、確かに1章にメリットと、14章にアンチパターンは書いてるけど、明確に「これデメリットよ」という話は無さそう。。まぁ「アンチパターンとデメリットって何が違うの?」ってのに明確な解答を出せてないけど、なんとなく2つってちょっと違うイメージ。

ので禅問答がてら思考遊びでもしてみようかと。

いちおうの前提

単純に「デメリット」っつうことで、この辺の話はナシで。

  • 「テストおせーよ」みたいなTDDサイクルにおけるアンチパターン
  • 「それhogehogeすればカバーできるよ?」な話

ちなみにTDDアンチパターンはこの記事なんか面白かったです。

TDD Anti-patterns catalogue at Stack Overflow を簡単に訳してみた

ざっと挙げる

バーっと考えてみて、これかな?ってのをざっと列挙。

  • メンテナンスの必要なコードが増える
  • 見た目の実装工数が増える

メンテナンスコードの増大

どう考えてもこれは発生しますわね。最初は気づいてなかったけど頂いたメンションにより「そっか、そらそうだよね」と。

確かにコードが増加することは避けられない、よなぁ。

見た目の実装工数の増加

コードが増加するのに付随しそうだけど、TDDは「いわゆる実装工程」なタイミングでやるもんだと思うけど、その工数が増えますね。

「イヤ詳細設計レベルのも含んでる」「テストの工数も減少できるし」はもちろんyesと言いたいけど。まぁ今までその辺をちゃんとネゴって実行した事がないので具体的な説得術が無かったり。

そういや

普通に見積もった工数で「実装工数」として取った期間内でTDD的に作って後の工程で"余暇"を満喫

な事もやったりしてたっけ。。。いや余談やけど。

ていうかイチイチ「説得」とか面倒になってしようともしなくなったなぁ。。。勝手にやってしまってる。あこれも余談すね。。

こんなもん?

ん〜。なんかまだあるような気もするけど、ひとまずこんなもんかな。時間かけても出てこないっす。

思いついたら追記なりしてみるかー

p.s.

「デメリット」と「アンチパターン」って何か違う事柄の様なカンジがするんだけど、うまく言語化できてない。。

この辺も整理できると楽かなー