削除することが望ましい b()
使用されなくなった関数は、最初に使用されていない関数を追加しないことが望ましいのと同じ理由で、一度ことが望ましいです。あなたがそれを「読みやすさ」または他の何かと呼んでも、他のすべてが同じであれば、それはそれが役に立たない何も含まないコードの改善です。持っていない方が良い特定の対策を少なくとも1つ持つために、それを削除すると、その変更後の将来のメンテナンスコストがゼロになることが保証されます。
テストでそれを実際に削除するために必要な特別な技術は見つかりませんでした。b()
新しいものに置き換えるという考えにはもちろんb()
、現在呼び出しているすべてのコードの考慮が必要であり、テストは「すべてのコード「。
一般的に私のために動作することを推論のラインがポイントで、私はそれが気づくところということでf()
作られたb()
ので、廃止されたb()
少なくとも廃止されるべきであり、私はすべてのコールを見つけるために探していますb()
への呼び出しに置き換えることを意図してf()
、Iテストコードも考慮してください。特に、b()
不要になった場合は、単体テストを削除できますし、削除する必要があります。
あなたは、それがもはや必要ではないことに気付くように強制するものは何もないということはまったく正しいb()
。それはスキルの問題です(そして、スリムが言うように、コードカバレッジは高レベルのテストについて報告します)。単体テストのみで機能テストがない場合は、を参照してb()
、公開されたインターフェイスの一部ではないことを慎重に楽観的にすることができます。したがって、それを削除することは、私の直接制御下にないコードの重大な変更ではありません。
赤/緑/リファクタリングサイクルは、テストの削除を明示的に言及していません。さらに、b()
コンポーネントは明らかに修正のために開かれているため、削除するとオープン/クローズの原則に違反します。したがって、このステップを単純なTDD以外の何かと考えたい場合は、先に進んでください。たとえば、テスト「不良」を宣言するプロセスがある場合があります。このプロセスは、存在しないはずの何か(不要な関数b()
)をテストするという理由でテストを削除する場合に適用できます。
実際には、ほとんどの人はおそらく赤/緑/リファクタリングのサイクルに沿ってある程度の再設計を行うことを許可するか、厳密に言えば「リファクタリング」の有効な部分である冗長ユニットテストの削除を検討すると思いますリファクタリングではありません。あなたのチームは、この決定を正当化するのにどのくらいのドラマと書類作業が含まれるべきかを決めることができます。
とにかく、b()
重要な場合は機能テストがあり、それらは簡単には削除されませんが、ユニットテストのみがあると既に述べています。ユニットテスト(変更したコードの現在の内部設計に書き込まれます)と機能テスト(公開されたインターフェイスに書き込まれ、おそらく変更したくない)を適切に区別しない場合は、より注意する必要があります単体テストの削除について。