🕒

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

2024/02/23に公開

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

4.13 ミュータブルオブジェクトに流れるようなインターフェースを実装しない

const queryBuilder = QueryBuilder.create(/.../)
.select(/.../)
.from(/.../)
.where(/.../)

このようなオブジェクトの場合、中でミュータブルになっていると元々のオブジェクトを使っているのか、新しいオブジェクトを使っているのかなどの混乱を招く
イミュータブルオブジェクトであれば、流れるようなインターフェースを実装すること自体は問題ない。

class QueryBuilder {
  select(): QueryBuilder {}
  from(): QueryBuilder {}
  where(): QueryBuilder {}
}

4.14 まとめ

常にイミュータブルオブジェクト優先で作ろう。
仮に値を変更したくなったら、コピーを作成して有効なオブジェクトを生成しましょう。
これを行うメソッドは、宣言的で、便利な振る舞いを実装しよう。

Discussion