テスト駆動の説明でよくある間違いに気づいた。

最初にテストに失敗させる。
その後テストが通るように修正する

↑これをリファクタリングと言ってる人がいるけど、
これリファクタリングじゃない。
なぜなら機能が変わっているから。

テスト駆動開発中にリファクタリングすることはあるけど
開発そのものはリファクタリングじゃない。

テスト作成 → レッド →(リファクタリング)→ 開発 → グリーン→(リファクタリング)→最初に戻る

※リファクタリングは必須ではない

http://www.infoq.com/jp/news/2014/03/fowler-workflows-refactoring
> 「プログラミング中は、頻繁に、ことによると数分毎に2つの帽子を取り
> 替えることになるだろう。しかし、一度にかぶれる帽子はどちらか1つだけだ。」

マーティン・ファウラー氏がいうように、リファクタリングと開発は分けて考えないといけない。