最近は、ほとんどテスト駆動開発(TDD)で行っているので、頭の中が整理できていること・リファクタリングをするときにも、ああここは間違っていたなという箇所を思い切って修正することができます。
ただ、テスト駆動開発をしていて感じることは、ある既存のシステムの開発をしているときに、これをしないとテストコードが通らないということがあります。
本来は、それを設定しなくてもテストコードが通らなくてはならないので、こういった実装はすべきではないなと思います。
テスト駆動開発で進めると、こういったメリットや不吉な匂いではありませんが、このような実装はしてはいけないのだなということがよくわかるようになってきました。
ただ、テスト駆動開発をしていて感じることは、ある既存のシステムの開発をしているときに、これをしないとテストコードが通らないということがあります。
本来は、それを設定しなくてもテストコードが通らなくてはならないので、こういった実装はすべきではないなと思います。
テスト駆動開発で進めると、こういったメリットや不吉な匂いではありませんが、このような実装はしてはいけないのだなということがよくわかるようになってきました。
下記のコメントについて、教えてください。
>ただ、テスト駆動開発をしていて感じること
>は、ある既存のシステムの開発をしているとき
>に、これをしないとテストコードが通らないと
>いうことがあります。
>本来は、それを設定しなくてもテストコード
>が通らなくてはならないので、こういった実
>装はすべきではないなと思います。
よく理解できず、でも気になったところなので、もう少し詳しく教えてもらえませんか?
こんばんは。コメントありがとうございます。
今回の事例でいくと、本来はありえないことですが、
あるクラスが、データベースの操作をするわけでもないのに、データベースを参照している構造になっており、つまり、クラスAがデータベースを参照している構造です。こうなっていると、インスタンスを作成するときに、データベースを必ずセットしてあげなくてはならなくなるので、本来は不要なコードが出来てしまうということです。
つまり意味のないコードが存在しているということです。
もしこういった構造をするのであれば、データベースがクラスを参照しているといった構造にすべきという基本的なことです。
確かにTDDでは、パスすることが第一になるので、無駄と分かっているところに、アサーションの無駄も出ますね。
ありがとうございました(^^)