[Programing] 10 November 2005 はてなブックマーク - パラノイアと呼ばれるほどに・・・ Twitterでつぶやく

パラノイアと呼ばれるほどに・・・

コードを綺麗に保つ必要性を改めて理解しました。
プログラマはプログラミングを生業とする生き物であるゆえにプログラミングを好みます。乗ってるときは一種のトリップ状態にすら陥ります。

それゆえプログラマはコードを書き散らすのが好きな場合が多いです。特に覚えたてのころは楽しくて仕方がないため手に負えません。
しかし、テストコードを伴わない即物的欲求に従ったコードは誰も読むことのできない変更することの不可能な屑コードに成り下がります。
もし、テストを行わずに客先に成果物を提出できる心臓の持ち主ならこちらへ進んでくださいw

私は大胆ですが小心者であるためテストコードがない状態でプログラミングを進めることに大きな恐怖感と精神的苦痛を感じます。殆ど気が狂うほどの羞恥プレイ状態・・・
テストコードなき即物的プログラミングの欠陥は明らかです。
・オートメーション化されていないテストは多量の時間と労力が必要です。
・たとえ大量の時間と人手があったとしても、人間は100%ミスを犯します。
・コードの変更時に影響範囲を予測できません。

その上、プログラマは動かすまでわからないコードを書くという不安感と罪悪感にさいなまれます。

一方で、テスト駆動開発を採用することにより得られるメリットとして下記があげられます。
・(意外なようですが、)高速な開発
・高い品質
・仕様変更に対する耐久性の向上

これらを理想論であり新し物好きの戯言だと思うのは当然です。
なぜなら、かつて私もテストコードを書く時間など無駄そのものと考えていました。テストコードなど幾ら書いても成果物として認められないし、本来のコードと合わせて倍以上のコード量が必要になるからです。
しかし、あるプロジェクトで本物のテスト駆動開発を経験してから視点が変わりました。テスト駆動開発は頻繁な仕様変更に襲われる現場にこそ必要な手法です。

上であげたメリットは上司に対する殺し文句で利用すると良いでしょうw
プログラマとして実感できるメリットをあげます。
・テストを書いてからコードを書くため確実に動くという安心感がある
・テストを数百回でも繰り返すことができるため変更に対して臆病にならない
・テストしやすいコードはおのずとシンプルかつ可読性の高いものとなる
・テストすらプログラミングのためプログラマが楽しい


理想論ではなく、現実的であればこそテスト駆動開発を採用すべきです。
泥沼から抜け出すための唯一の方法と言っても良いでしょうw
すぐにJUnit、TDD、テスト駆動、XP、アジャイルでぐぐって見ましょう。

ちなみに、テスト駆動開発をマスターするにはペアプロが一番手っ取り早いです。非常に疲れますが、ペアプロは技術の伝播と相互監視と言う点で非常に優れています。

Comments

No comments yet

Add Comment

このアイテムは閲覧専用です。コメントの投稿、投票はできません。