フジボウルの寺山です。
今回は自分用のメモに近くなりますが、最近知った「テスト駆動開発」についてです。
テスト駆動開発とは、プログラム開発手法の一つで、プログラムに必要な機能に関して、まず初めにテストコード及び仕様書を書いていき、そのテストに必要な開発を進め、その後そのコードの精度を上げていくというものです。
普通の開発プロセスである設計⇨実装⇨テストではなく、テスト⇨実装⇨リファクタリングという形です。
略称としてTDDと呼ばれているそうです。
上記のテスト⇨実装⇨リファクタリングは、レッド、グリーン、リファクタリングとも呼ばれ、
レッド: 仕様に対して失敗するテストコード
グリーン: レッドを元に成功するコードを書く
リファクタリング: あるルールと乗っ取り、ソースコードから余分なものを取り除いたり、よりわかりやすい物変えたりして整える。
という構成になっております。
では、何故このような開発手順にするかというと、動作するコードを書きながらコードを綺麗にしていくことができるからです。
普通の開発手順の場合、綺麗なコードを書きながら動くものを作るという形ですが、テスト駆動開発の場合動くというところが前提にあり、その後リファクタリングによって綺麗にいくため、動かないコードにはなりません。
また、初めにテストコードや仕様書を書くために、そのプロダクトへの理解がなくてはならず、テストコードや仕様書の作成の過程で理解が深まるのもメリットと言えると思います。
テストコードの漏れは、テスト⇨実装⇨リファクタリングの流れを短く何度もこなすことやテストコード自体のレビューである程度防げると思います。
ただ、今まで異なる開発手法の導入は慣れも必要ですし、コストもかかります。また動いているコードはあまり触らない方針もありますから導入には中々上手くいかないかもしれません。
導入出来そうでしたら検討してみたいですね