8️⃣
[読書メモ]オブジェクト設計スタイルガイド 3章1~2節 with TypeScript
オブジェクト設計スタイルガイドを読みながら、TypeScriptでやるならどうやるかを考えながら書きました。
要約的に読める内容になっていると思うので、サクッと3分ぐらいで読める記事となっています。
サービスとその他のオブジェクトのうちの、その他のオブジェクトを扱う。
その他のオブジェクトは、バリューオブジェクトとエンティティに分けられる。
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