7️⃣

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

2024/02/17に公開

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

4.7 イミュータブルオブジェクトでは、モディファイアメソッドは宣言的な名前にする

モディファイア:「⁠非破壊の編集ができる機能」のこと

戻り値がvoidではないので、コードをみないとわからない。
tip: 「私は...が欲しいが...となっていてほしい」と考える

Positionの例だと、「私はこの位置が欲しいがn step 左に移動(n step to the left)となっていてほしい」と考える
何をして欲しいかではなく、どうなっていて欲しいかを「宣言」している

技術的な名前ではなく、ドメインに特化した抽象度の高い名前にすると良い。

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
  }
}

Discussion