質問の仕方がよくわかりませんが、次の状況についてどう思いますか、どの状況を好むか知りたいです。
私たちは、winforms を使用したクライアント サーバー アプリケーションで作業しています。また、別のフィールドに入力すると自動的に計算されるいくつかのフィールドを持つコントロールがあります。したがって、ユーザーが入力すると、別のフィールド、おそらくより多くのフィールドの自動入力が決定されるフィールド通貨があります。
ユーザーが通貨フィールドに値を入力すると、ユーザーが入力した文字列に基づいてキャッシュから Currency オブジェクトが取得されます。入力された通貨がキャッシュ内に見つからない場合、ヌル参照がキャッシュ オブジェクトによって返されます。さらに、アプリケーション層に通貨に基づいて他のフィールドを計算するように要求すると、null 通貨が指定された場合、null 固有のフィールドが返されます。このように、デフォルトの暗黙的な動作は、すべてのフィールドをクリアすることです。これは予想される動作です。より明確にするために、ユーザーが「利用できない通貨」を入力すると、もちろん通知されますが、入力された通貨に依存するフィールドもクリアする必要があります。これは、特定のコントロール値を null に設定することによって行われます。
私が明示的な実装と呼ぶのは、 Currency オブジェクトが null であることを確認することです。この場合、依存するフィールドは明示的にクリアされます。
後者のバージョンの方が明確で、エラーが発生しにくく、テストしやすいと思います。しかし、それは一種の冗長性を意味します。以前のバージョンは明確ではなく、テストで表現されていないアプリケーション層からの特定の動作を暗示しています。たぶん下位層のテストで、下位層を変更する必要が生じた場合、null 通貨が与えられた場合に何か他のものを返す必要がある場合、動機がないというだけのテストが障害になるとは思いません。上位層にバグを導入。
皆さんはどう思いますか?