これは、チームでの作業方法に関する質問です。
最近、6人のチームで最初の大規模な(〜80クラス、Java)プログラミングプロジェクトに取り組みましたが、継続的にコードに取り組んでいたのは4人だけでした。早い段階で行われるように作業を分散しましたが、ある時点で、私のコプログラマーの1人がまだ実装していないメソッドを呼び出す必要がありました。これに対処するための推奨される方法は?
私が見たオプションですが、どれも好きではありません。
自分を書く//TODO
そして、このコード行を後で再確認して、メソッドが実装されているかどうかを確認します。
今を実装するように対応するチームメンバーに依頼する。
まだ実装されていないものの明確な説明を含むカスタムruntimeExceptionをスローします。 (少なくとも、何が欠けているかを見つけるために長い時間検索する必要はありません)
必要なメソッドをtheirクラスに追加し、それらを//TODO
をメッセージ本文に含めます。その変更について簡単なメッセージを送信することもできます。 (今はもう私の問題ではありませんが、それまでにこの方法で作業していると、厄介なマージの競合が発生する可能性があります)
実際に機能するコードを書く前に、すべての抽象クラスまたはインターフェースを定義します。 (これらのインターフェースは頻繁に変更されたため、うまく機能しませんでした)
それは興味深い質問であり、答えはあなたが思うよりも簡単かもしれません。
簡単に言えば、仮定を検証するテストを記述します。実装するかプログラマー仲間であるかは関係ありません
長い答え。
リストするオプションはいくぶん受動的であり、youが戻ってきて、コード(存在する場合)を遅かれ早かれ再確認する必要があります。
十分なレベルのテストを達成するには、2つの分野を確認することをお勧めします。
TDD-テスト駆動開発-これにより、意図を説明し、十分にテストすることができます。また、まだ実装されていないメソッドとクラスを(インターフェースを使用して)モックまたは偽造する可能性もあります。コードとテストは引き続きコンパイルされ、プログラマーのコードを切り離して独自のコードをテストできます。 (参照: https://en.wikipedia.org/wiki/Test-driven_development )
ATDD-受け入れテスト駆動型開発-これにより、機能全体をテストするのに役立つ外部ループ(TDDループの周り)が作成されます。これらのテストは、機能全体が実装されたときにのみ緑色に変わります。したがって、フェローが作業を完了すると、自動インジケーターが表示されます。あなたが私に尋ねればかなりきちんとしています。
注意:あなたの場合、私は単純な受け入れテストのみを記述し、ビジネスサイドの多くを取り込もうとはしません。機能に必要なシステムのすべての部分をまとめた簡単な統合テストを記述します。必要なのはそれだけです
これにより、コードをContinous Integrationパイプラインに配置して、信頼性の高い実装を生成できます。
そのトピックについてさらに詳しく知りたい場合は、次のリンクを確認してください。
スタブを要求します。
または自分で書いてください。いずれにせよ、あなたとあなたの同僚は、インターフェースとそれらがどのように使用されることが意図されているかについて合意する必要があります。その合意は比較的堅固である必要があるため、スタブに対して開発できます-言うまでもなく、ユニットテスト用に独自のモックを作成できます。 。
あなたの状況では、私はその機能の責任を負うチームメンバーに話します。彼らはその機能の開発に優先順位を付けて、より早く使用を開始できる立場にあるかもしれません。
私はあなたの4番目のオプションを避けます。すべてのコードを記述したので、あなたが言うように、それを問題とは見なしなくなりました。その後、同僚が関数の実装を記述し、それが問題であるとは見なしなくなります。あなたが書いたコードが正しく機能することを実際にテストするのは誰ですか?