テスト駆動では次のプロセスを何度も回します。
- 目標を考える
- 目標を示すテストを書く
- 実行して失敗させる(REDの状態)
- 目的のコードを書く(コードの汚さは関係なし)
- テストを成功させる(GREENの状態)
- テストが通るまでリファクタリングを行う
テストに時間がかかるのは、コードが読みにくい(汚い)とか、 最初からロジックの最適化を考えてしまうことが時間を消耗しているように思います。
ただ、テストコードが揃っていれば、ロジックの目的、理解ができるため、 後から修正する場合が、圧倒的に楽になります。
不具合があっても、意図して書かれたコードか、単純な間違いなのか、 とりあえず場当たり的に書いたものなのか、 なにもわからない事態に陥ることにもなりかねません。
テスト駆動開発は、完璧主義ではありません。 ひとまず、最低限の品質を担保し、後に後任者に、 より高品質、高機能なプロダクトを委ねる手段と思っています。
これなんだよな pic.twitter.com/L3NkMUWopC
— Takuto Wada (@t_wada) 2021年4月13日