5️⃣
[読書メモ]オブジェクト設計スタイルガイド 6章7.8節 with TypeScript
オブジェクト設計スタイルガイドを読みながら、TypeScriptでやるならどうやるかを考えながら書きました。
要約的に読める内容になっていると思うので、サクッと3分ぐらいで読める記事となっています。
6.7 クエリメソッドからはコマンドメソッドは呼び出さず、他のクエリメソッドを呼び出す
コマンドメソッドは副作用を持つため、クエリメソッドから呼び出すべきではない。
ただ、違反しなければいけない場合もある。
例えばユーザー登録のコントローラーのようなものは、クエリメソッドからコマンドメソッドを呼び出すことがある。
class UserController {
registerUser(name: string, email: string, password: string) {
const user = new User(name, email, password);
this.userRepository.save(user);
const newUser = this.userRepository.find(user.id);
return new response(200, newUser);
}
}
6.8 まとめ
- クエリメソッドは、情報の断片を返すメソッド
- 得たい情報がシステムの境界を超える場合は、メソッドに対する抽象化を考える
- クエリを使用するサービスをテストする場合、フェイクやスタブに置き換える。
Discussion