質問: TDDとリファクタリングは仕事中運用したことがないですが、興味がありますので、勉強したいと思います。 幾つの文書を読みましたが、分からないことがあって、経験のある方に教授していただきたいです。 質問1.ソースコードをリファクタリングすると、テスト用のソースコードも潰れる可能性があると思います。 例えばmethod Aには二つの関係しない処理があって、method Bとmethod Cに分けることにしたい場合は、method Aのテストメッソドも修正しないとならないですよね。こうすればデメリットも多きいではないでしょうか?この方向で検討している文書を見たことがないですが、皆さんはどう思いますか? 質問2.TDDは複雑なシステムに向いてますか?TDDを紹介してくれた文書にはすべて極めてサンプルですので、本番なSI開発でTDDは機能しますか? 補足情報(言語/FW/ツール等のバージョンなど) 外国人ですので、変な日本語を書いているなら申し訳ないです。
回答: 質問1だけ回答します。 > > 例えばmethod Aには二つの関係しない処理があって、method Bとmethod Cに分けることにしたい場合は > > > 「method Aのテストコードがある」ということは、method Aを**誰かが使っている**ということと同義になります。リファクタリングでmethod Aの動作を破壊してしまうのは、正しいリファクタリングではありません。 method Aがライブラリで公開しているようなメソッドであれば、**その動作を保ちつつ**行うのが正しいリファクタリングです(テストコードは、それを維持するための味方となります)。逆に、package privateなど可視性も限られて、どこでもmethod Aを使わなくなったのなら、テストコードごと処分しましょう。