ただ飯は無い

404 Blog Not Found:「同じコード」の同じって何さ - TAPのススメ

その意味で、実はコーディング規約より、メンテナブルなコードよりも役に立つのが、テスト。要はテストをパスしてしまえばどうコードしても構わない、というのがTDD = Test Driven Development =テスト駆動開発の考え方のベースとなっています。

TDDについては、直訳から想像される意味程度の理解しかありませんが、こんな極端なモノなら、ちょっと採用したくないですね。

プログラマのジョークかなにかでありましたが、

「アレ、この関数バグっているよ。引数が1だったら戻り値は10の筈だよ」
「すぐ直します!」
で、直したコードが

int Foo(int x)
{
  // ...
  if (x == 1)
    return 10;

  // ...
}

こんなコード書くようなプロはいないと笑い飛ばしたくなりますが、例えば、徹夜が三日続き、客から強いプレッシャーをかけられ、私生活では家族が病気で入院していて・・・と、条件を追加したらどうでしょう? 何時もは、まともなコードを書く人でも、一時しのぎのハックをしてしまうかもしれません。

テストを通ることを目的にすることは、正解を見ながら回答をでっち上げることも可能であり、でっち上げ出来ないようなテストを書こうとするとテストに掛ける工数は非現実的なものになります。もちろん、でっち上げするような開発者を雇うことは問題ですが、開発者も人間なので極限状態では想定外なことをするものだし、ソフトウェア開発において極限状態は意外と身近なものだったりします。(^^;

リンク先でいっているTDDは、私には、そもそもTDDを使わなくても開発できる優秀な開発者じゃないと成り立たなく無いか?と思えます。

○○すれば、あとはどーでもよい。といううまい話を聞くと、ワインバーグ先生の「仕様の探検学−設計に先立つ品質の作り込み」にある「絶対!確実!保証印ゴキブリ退治キット」を思い出します。このキットを買うと鉄製の板が2枚送られてきて、説明書には1枚の板にゴキブリを乗せ、もう1枚の板でゴキブリを叩きつぶす、と書いてあります。鉄板で潰せは確実にゴキブリは退治出来ますよね。

どーやって板にゴキブリを乗せるかは、あなた次第という訳です。