Open2
ソフトウェア設計入門

ソフトウェアの設計に関連する用語/概念や意味を整理していく
いろんな用語/概念たち
- クリーンアーキテクチャ
- DDD
- 依存性注入
- オブジェクト指向
- リポジトリパターン
参考書籍
- ちょうせつソフトウェア設計入門
- ドメイン駆動開発入門
- など

Tell, Don’t Ask(尋ねるな、命じろ) 原則
-
「オブジェクトに情報を聞いて処理を自分でやるな。代わりにオブジェクトにやってほしいことを伝えろ」というルール
-
Ask型 = 「あの人がどういう状態か教えて → 自分で判断して処理」
-
Tell型 = 「あなたが適切に処理して」
❌ 悪い例(Ask している)
if user.is_admin():
grant_access()
- ここでは user から情報を聞き出して(ask)、外側で判断して処理している
- 👆 これだと 外のコードが user の内部を知りすぎている
- ロールが増えたらここを直す必要がある
✅ 良い例(Tell している)
user.grant_access()
- ここでは「ユーザーに権限を与えて」と指示している
- 内部でどう判断するかはuserが責任を持つ
メリット
- カプセル化を守れる(オブジェクトの中身を外からゴチャゴチャ触らない)
- 責務がハッキリする(誰が何を決めるか明確になる)
- 変更に強いコードになる(内部仕様を変えても外部コードに影響しにくい)