Before:OrderManagerが何でも担当している
class OrderManager {
constructor(db, mailer) {
this.db = db;
this.mailer = mailer;
}
process(order) {
// 1) 検証責務
if (!order.email || !order.items || order.items.length === 0) {
throw new Error('invalid order');
}
// 2) 永続化責務
const saved = this.db.insert('orders', order);
// 3) 通知責務
this.mailer.send(order.email, '注文完了', 'ありがとうございます');
// 4) 表示整形責務
return {
id: saved.id,
message: `Order #${saved.id} completed`,
totalLabel: `${saved.total.toLocaleString()}円`
};
}
}
// AIに「メール本文だけ敬語にして」と依頼したら、
// process() 全体を触って検証や返却フォーマットまで変えてしまうリスクがある。
壊れ方:通知修正のつもりが、検証条件やレスポンス形式まで巻き込む。 責務境界がないため、影響範囲を事前に縛れません。