6️⃣
[読書メモ]オブジェクト設計スタイルガイド 4章6節 with TypeScript
オブジェクト設計スタイルガイドを読みながら、TypeScriptでやるならどうやるかを考えながら書きました。
要約的に読める内容になっていると思うので、サクッと3分ぐらいで読める記事となっています。
4.6 ミュータブルオブジェクトでは、モディファイアメソッドはコマンドメソッドにする
モディファイア:「非破壊の編集ができる機能」のこと
エンティティでは、非破壊の変更をしたい
class Position {
constructor(private x: number, private y: number) {}
private clone() {
return new Position(this.x, this.y)
}
toTheLeft(steps: number) {
let copy = this.clone()
copy.x = copy.x - steps
return copy
}
}
class Player {
constructor(private position: Position) {}
moveLeft(step: number): void { // ① return void
this.position = this.position.toTheLeft(step) // ② 新しい値に書き変わる
}
}
①,②が、コマンドメソッドの特徴
Discussion