TDD円は次のとおりです。ステップは、我々は単に失敗テストを修正するために、できるだけ簡単なコードを記述すると想定されている「コーディング」でテスト - >コード - >リファクタリング、いつリファクタリングを開始する必要がありますか?
"Write failing Test" -> "Write Code to fit a Test" -> "Refactor"
。実際に必要となるまで複雑なコードを書くべきではありません。
次のステップはリファクタリングです。私たちは単にコードを書き直すべきでしょうか?テストが合格するまではコードに満足しているはずだから、本当の意味はないと思う。
恐らく、リファクタリングの活動は、コードの書き込みが失敗したテストによって引き起こされるように、何かによって強制されるべきです。ここではいくつかの可能な要因:
- 書き込まれる次のテストは、システム内のいくつかの変更(リファクタリング)が必要です
- パフォーマンスが悪いです。機能を無効にすることなく改善する必要があります
- コードレビューでは、記述されたコードは理解しにくいことが明らかになりました。
リファクタリングを開始する他の理由は何ですか?
また、この方式は正しいです:
"Write failing Test" -> "Code" -> "Refactor" -> "Write failing Test"
またはそれが
"Write failing Test" -> "Code/Refactor" -> "Write failing Test"
+
"External factor (like bad performance)" -> "Refactor".
'Refactor-> Refactor-> Refactor'セクションが膨大な量の開発時間を吸収する無限の変更につながることを強調したいだけです。また** **コードが変更されるたびに、そのコードの変更が新しい機能であるかリファクタリングであるかに関わらず、テストを再度実行する必要があることに注意してください。 – quamrana
私たちがアプリケーションを書くことを考えてみましょう。この時点で、タスクのリストと新しいタスクの公開が可能になります。しかし、テストに合格するには、グローバルなタスクリストがあれば十分でした。確かに、顧客は「仕事を持続させる」ことを望んでいる。 IRepositoryを実装するのがよい方法であると私は決めることができます。それを使用するには既存のコードが必要です。だから私は彼らがIRepositoryに電話することを確認する方法をリファクタリングする。今回のリファクタリングは、新しいユーザーストーリーに起因していました。要するに、私が把握しようとしているのは、Code Writingだけでなく、Refactoring自体を駆動するためにユーザーストーリー/テストを使用できるかどうかです。どう思いますか? – alex2k8
私たちはTDDから少し離れているので、私はそれを省略します。 *リファクタリング*の定義(TDDの世界の中で)は、テストが緑色になるまでリファクタリングを開始せず、緑色(やはり/まだ)でなければ完了していないということです。だから彼らは役に立つツールですが、実際にはリファクタリングを「推進」することはできません。 私はユーザーストーリーの実践においてINVESTについてかなり規律を持っています。私はいつもあなたが上でやったのと同じように、必要なリファクタをユーザーストーリーの一部として再構築しようとします。 「IRepositoryにリファクタリングする」という話は決してありませんが、代わりに貴重なユーザー対応機能の不可欠な部分にします。 – ndp