5️⃣

[読書メモ]オブジェクト設計スタイルガイド 6章7.8節 with TypeScript

2024/03/05に公開

オブジェクト設計スタイルガイドを読みながら、TypeScriptでやるならどうやるかを考えながら書きました。
要約的に読める内容になっていると思うので、サクッと3分ぐらいで読める記事となっています。
https://www.oreilly.co.jp/books/9784814400331/

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