Open2

ソフトウェア設計入門

ただのとりただのとり

ソフトウェアの設計に関連する用語/概念や意味を整理していく

いろんな用語/概念たち

  • クリーンアーキテクチャ
  • DDD
  • 依存性注入
  • オブジェクト指向
  • リポジトリパターン

参考書籍

  • ちょうせつソフトウェア設計入門
  • ドメイン駆動開発入門
  • など
ただのとりただのとり

Tell, Don’t Ask(尋ねるな、命じろ) 原則

  • 「オブジェクトに情報を聞いて処理を自分でやるな。代わりにオブジェクトにやってほしいことを伝えろ」というルール

  • Ask型 = 「あの人がどういう状態か教えて → 自分で判断して処理」

  • Tell型 = 「あなたが適切に処理して」

❌ 悪い例(Ask している)

if user.is_admin():
    grant_access()
  • ここでは user から情報を聞き出して(ask)、外側で判断して処理している
  • 👆 これだと 外のコードが user の内部を知りすぎている
  • ロールが増えたらここを直す必要がある

✅ 良い例(Tell している)

user.grant_access()
  • ここでは「ユーザーに権限を与えて」と指示している
  • 内部でどう判断するかはuserが責任を持つ

メリット

  • カプセル化を守れる(オブジェクトの中身を外からゴチャゴチャ触らない)
  • 責務がハッキリする(誰が何を決めるか明確になる)
  • 変更に強いコードになる(内部仕様を変えても外部コードに影響しにくい)