6️⃣

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

2024/02/16に公開

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

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