2️⃣

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

2024/02/12に公開

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

3.11 オブジェクトに不要なものは持たさない

オブジェクトに何をm持たせるかという視点で設計すると必要以上の振る舞いを実装しがち。
まずは、TDDで何が必要かを考えてから実装しよう。

3.12 コンストラクタをテストしない

テストしない、というよりも

  • 失敗知るケースのみテストを書く
  • テストのためだけのgetterは用意しない
    というのが大切。

3.13 例外:データ転送オブジェクト

DTOは、バリデーションエラーを収集することや、プロパティフィラーを使っても良い。
なぜなら、DTOは内部を保護しないから。

class X_DTO {
  constructor(public title: string, public description: string) {
    const errs = this.validate()
    if (errs.size > 0) {
      throw // 略
    }
  }

  validate() {
    const errs = new Map<string, Error>();

    if (!this.title) {
      errs.set("title", new Error('titleないよ'))
    }
    
    if (!this.description) {
      errs.set("description", new Error('descriptionないよ'))
    }

    return errs
  }
}

Discussion