🕒
[読書メモ]オブジェクト設計スタイルガイド 4章13~14節 with TypeScript
オブジェクト設計スタイルガイドを読みながら、TypeScriptでやるならどうやるかを考えながら書きました。
要約的に読める内容になっていると思うので、サクッと3分ぐらいで読める記事となっています。
4.13 ミュータブルオブジェクトに流れるようなインターフェースを実装しない
const queryBuilder = QueryBuilder.create(/.../)
.select(/.../)
.from(/.../)
.where(/.../)
このようなオブジェクトの場合、中でミュータブルになっていると元々のオブジェクトを使っているのか、新しいオブジェクトを使っているのかなどの混乱を招く
イミュータブルオブジェクトであれば、流れるようなインターフェースを実装すること自体は問題ない。
class QueryBuilder {
select(): QueryBuilder {}
from(): QueryBuilder {}
where(): QueryBuilder {}
}
4.14 まとめ
常にイミュータブルオブジェクト優先で作ろう。
仮に値を変更したくなったら、コピーを作成して有効なオブジェクトを生成しましょう。
これを行うメソッドは、宣言的で、便利な振る舞いを実装しよう。
Discussion