先頭と末尾の白いスペースなど、矛盾のあるデータを含むデータベースを扱っています。
一般的に、多くの開発者が、ある時点でユーザーが入力した可能性のあるデータベースからの文字列をほぼすべて削除することで、防御的コーディングを実践しているのを目にします。私の意見では、データが永続化される前にそのようなフォーマットを行う方が良いので、一度だけ行われ、データが一貫した信頼できる状態になることができます。残念ながら、これは当てはまりませんが、Trimメソッドを使用して次善の策にたどり着きます。
データ アクセス レイヤーの一部としてすべてのデータをトリミングする場合、ドメイン レイヤーのビジネス オブジェクト内で防御的なトリミングを気にする必要はありません。代わりに、C# プロパティの set アクセサーなどを使用して、トリミングの責任をビジネス オブジェクトに置くと、最終的には同じ結果が得られるはずですが、トリミングは、ビジネス オブジェクト プロパティに割り当てられたすべての値だけでなく、ビジネス オブジェクト プロパティに割り当てられた値にも適用されます。矛盾したデータベースから。
私が尋ねることができる答えを決定するかもしれないやや哲学的な質問として、「ドメイン層はデータの防御的/強制的なフォーマットを担当する必要がありますか?フォーマットされていない文字列またはフォーマットされた文字列をフォーマットしてから、必要に応じてフォーマットしようとしますか、それとも、この責任をプレゼンテーション層とデータ アクセス層に押し付けて、ドメイン層が受け入れるデータの種類をより厳密にする必要がありますか? これはより根本的な質問かもしれないと思います。
更新:以下は、このトピックについて共有する必要があると私が考えたいくつかのリンクです。
情報サービス パターン、パート 3: データ クレンジング パターン