私は彼らの仕事に基づいてそれらを整理します。私は、いくつかの大きくて粒度の粗いメーラーよりも、小さくて粒度の細かいメーラーを多く持つことを好みます。たとえば、私はおそらく持っていないでしょうがAdminMailer
、管理者で起こるさまざまなことのためにいくつかの異なるメーラーがあります. 通知についても同じことが言えます。おそらく、通知を送信するユースケースが複数あるので、それぞれにメーラーを用意します。一般に、機能ごとのメーラーと考えることができます。
オブザーバーに関しては、それは彼らのタスクに依存します。分析のためにユーザーの作成と変更を監視している場合、おそらく単一のUserObserver
. UserAnalyticsObserver
ユーザーに 2 番目のオブザーバーが必要になったら、すぐに名前を変更します。現在のプロジェクトを見ると、4 人のオブザーバーがいて、そのうちの 1 つだけがモデルにちなんで名付けられています。ほとんどは機能にちなんで名付けられています。
ここでの私の推論は、単一の責任の原則に従うことです。これは、基本的に、1 つのクラスには変更する理由が 1 つある必要があることを意味します。モデルの後にメーラー/オブザーバーの名前を付けると、複数の機能をサポートするクラスになるため、変更の理由が複数になります。