Slide 8
Slide 8 text
実装してみると...
コードの見通しが悪くなる
変更の影響範囲が予測しづらい
テストケースが複雑になり、保守が困難
class UserController {
public function create($userData) {
try {
// DB保存
$user = new User();
$user->setEmail($userData['email']);
$user->setName($userData['name']);
$this->userRepository->save($user);
// メール送信
$this->mailService->sendWelcomeEmail([
'to' => $user->getEmail(),
'name' => $user->getName()
]);
// 運営に通知
$this->notificationService->notifyToAdmin([
'message' => "新規ユーザー作成: {$user->getName()}",
'channel' => 'user-create'
]);
// 契約プランの作成
$plan = $this->planService->createFreePlan($user->getId());
// 招待コードがある場合の処理
if (isset($userData['invitation_code'])) {
$this->invitationService->markAsUsed($userData['invitation_code'], $user->getId());
// 紹介者にポイント付与
$inviter = $this->invitationService->getInviter($userData['invitation_code']);
$this->planService->addReferralPoints($inviter->getId(), 1000);
}
// 関連サービスへの連携
$this->externalService->syncUser([
'user_id' => $user->getId(),
'email' => $user->getEmail(),
'name' => $user->getName()
]);
return $user;
} catch (Exception $e) {
// エラーハンドリング
}
}
}
8/35