以下に示すように、コンストラクターで検証オブジェクトをインスタンス化しているため、set メソッドでユーザーの電子メールを検証できます。このアーキテクチャはベスト プラクティスですか、それとも欠陥がありますか? User クラスを Validation クラスに直接依存させないようにすることはできますか?
Class User {
Private Email
//constructor
User() {
Validation = new Validation
}
SetEmail(NewValue) {
if (Validation.isEmail(NewValue)) {
Email = NewValue
}
}
関連する質問: set メソッドが無効な値を受け取った場合、適切な応答は何ですか? 2 つのオプションが表示されます
- 値を設定せずに false を返す
- とにかく値を設定しますが、オブジェクトのエラー プロパティを設定します。(したがって、 User.Error が設定されている場合、何か問題が発生したことがわかります)
オブジェクト プロパティの値が常に有効であることを保証できるので、#1 がベスト プラクティスだと思います。正しい?