現場で役立つシステム設計の原則

Written by じび on 5月 29th, 2019

【未完成】
借りて読んだので内容を簡単にまとめました。
基本的に Web アプリケーション向けの内容なのですが、随所に他のシステムでも役に立ちそうな Tips が入ってます。

第1章 小さくまとめて分かりやすくする

ValueObject

  • 業務専用の型
  • 電話番号なら String ではなく TelephoneNumber 型を作って、長さなどの制限する。
  • 完全コンストラクタ(初期化時に値が決まり、以降変更できない。Immutable みたいなもの)にすると、コードを読む時に値の変化を気にする必要がなくなる。
  • 金額と数量はどちらも Int で表せるが、それぞれ独自の型を作っておくと誤った代入をコンパイル時に検出できる。
  • typedef のような型を別名で定義するのと比べて、コンパイル時に上記のような型誤りの検出が可能。
  • int はプログラミング言語の関心ごとで、金額や数量の型は業務の関心ごと。

コレクションオブジェクト

  • List や Array のプロパティを1つだけ持ち、それの操作メソッドを持つ。
  • immutable にする
  • 操作の結果は、同じ型のコレクションオブジェクトとして返す。

第2章

  • 早期リターンを使って if 文の else 節を排除すると、コードの見通しが良くなる。
  • インターフェイス宣言(Swift なら protocol)と区分ごとの専用クラスを組み合わせて、多態(Polymorphism)を実現する。
  • 区分オブジェクト:列挙型を使って業務で扱う区分の一覧を宣言する。

第3章

  • 共通関数は汎用的にするために、引数が増えたり似たメソッドが増える。そのため、使う方は、自分に関係ない引数を意識したり、似たようなメソッドの中から自分のニーズにピッタリ合った物を探す手間がかかる。
 

Leave a Comment