8️⃣

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

2024/02/08に公開

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

サービスとその他のオブジェクトのうちの、その他のオブジェクトを扱う。
その他のオブジェクトは、バリューオブジェクトとエンティティに分けられる。

3.1 一貫した振る舞いに最低限必要なデータを要求する

下記のようにconstructorでちゃんと渡そうという話。

class Position {
  constructor(private x: number, private y: number) {}

  distanceTo(other: Position) {
    return Math.sqrt((other.x - this.x) ** 2 + (other.y - this.y) ** 2)
  }
}

3.2 意味をなすデータを要求する

下記のようにconstructorでちゃんとバリデーションしようという話。

class Money {
  constructor(private val: number) {
    if (val < 0) { // お金がマイナスなのはおかしい
      throw new Error("err")
    }
  }
}

Discussion