2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Laravel,livewire2.0 TipsAdvent Calendar 2022

Day 4

ネットの記事で紹介されているServiceクラスの違和感

Last updated at Posted at 2022-12-03

経緯

UserControllerに色々書いてたらFatControllerになっちゃったよ・・・・
解決方法無いか調べてみるか....

ん?Serviceクラスを作って処理を分離させよう!?

UserControllerからビジネスロジックをUserServiceに分離した!!
これでFatController問題は解決だ!!

.....ん??

課題

あれ?処理は分離できたけど、ビジネスロジック部分をごっそり移動させたFatServiceが出来上がった...

解決策

ユースケースごとに処理を分ける

例えばユーザーを登録する処理をUserControllerに全部書いていた場合

UseCases\User\Create.php

にロジックを分離し、controller側から呼び出す。

実際は主語のでかいServiceクラスを
Hoge/HogeXXXXService
という具合に分離しました。

疑問

  • Serviceクラスとの使い分け
    • 引用に書いた解決策は,ServiceクラスをUseCaseもどきのように扱う解決策。
      • UseCaseそのものはUseCaseに、ある程度汎用的な処理そのものはServiceクラスに書く??

備考

Serviceクラスを作ってみよう!みたいな記事、ごっそり処理を移動させただけで根本的な解決をしていないものが多い気がする。

❌ FatController内の処理をServiceクラスに分離しよう!!
🟢 FatController内の処理をUseCase毎でServiceクラスに分離しよう!!

の方が良い気がする。

PS:デメテルの法則を良い感じに守ろうとServiceから他のServiceを呼ぶのを禁止にしたら、それはそれで問題が色々出てきたので最近そのルール辞めました。

参考記事

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?