計測・制御・データ処理のトータルソリューションで、お客様の問題解決提案を行います。


インフォテック開発者のつぶやき: YAGNIとTDD


YAGNIとTDD


2012/09/10


プログラム開発に以下の2つの単語があります。


1.YAGNI
    「You Ain't Gonna Need It 」の略で、意味は「機能は実際に必要となるまでは追加するな」ということです。
    必要になるまで実装を遅延することで、無駄なリソース(工数・容量・速度など)を消費せずに済みます。

    YAGNIは現実的な考えなので、この原則を守るようにしています。


2.TDD
    「test-driven development」の略で、コードを実装する前に、ユニットテスト(プログラムをテストするためのプログラム)を作成し、
    テストが成功するように実装をおこなうという手法です。

    自分はTDDを以前は行っていたが、今はしていません。全てのコードに対して、ユニットテストを作成するコストや、ユニットテストの保守を行うコストが合わないからです。
    理想的ではあるが、現実的では無かったです。但し、今でも社内ライブラリの作成時はTDDではないがユニットテストは書いています。


先日、あるかたのWEBサイトで、YAGNIとTDDが矛盾するという内容を見ました。そこには以下の文章が記載されてました。
「ユニットテストというのは変更に対してアジャイルに対応するために用意するものだ。その変更の必要がまだないうちから、すべてのコードに対してテストを用意するのはYAGNIの思想に反するのではないか。そのテストコードこそ You Ain't Gonna Need It ではないのか。」
なるほど、その通り。

結局、YAGNIを守るとTDDが出来ません。

というか、職業プログラムとして限られた時間の中で成果を出そうとすると、理想主義では駄目で、
現実主義にならないといけないので、YAGNIな考えになり、TDDまで手が回らない。

投稿者:匿名 | 投稿時間:2012/09/10 14:05

コメントを投稿

Blogger

HOME 会社案内 事業内容 PC開発事例 FA開発事例 ソリューション開発事例 製品情報 ブログ 求人情報 サイトについて サイトマップ 地図(別窓) お問い合わせ

最近の投稿


過去の投稿





▲ページの先頭へ