2

メーラーやオブザーバーを作成するとき、モデルに基づいて整理しますか、それともタスクに基づいて整理しますか?

モデルに基づく

PictureMailer
PictureObserver
EventMailer
EventObserver
UserMailer
UserObserver

またはタスクに基づく

AdminMailer (Mails to be sent to admins)
AdminObserver 
NotificationMailer
NotificationObserver
4

1 に答える 1

1

私は彼らの仕事に基づいてそれらを整理します。私は、いくつかの大きくて粒度の粗いメーラーよりも、小さくて粒度の細かいメーラーを多く持つことを好みます。たとえば、私はおそらく持っていないでしょうがAdminMailer、管理者で起こるさまざまなことのためにいくつかの異なるメーラーがあります. 通知についても同じことが言えます。おそらく、通知を送信するユースケースが複数あるので、それぞれにメーラーを用意します。一般に、機能ごとのメーラーと考えることができます。

オブザーバーに関しては、それは彼らのタスクに依存します。分析のためにユーザーの作成と変更を監視している場合、おそらく単一のUserObserver. UserAnalyticsObserverユーザーに 2 番目のオブザーバーが必要になったら、すぐに名前を変更します。現在のプロジェクトを見ると、4 人のオブザーバーがいて、そのうちの 1 つだけがモデルにちなんで名付けられています。ほとんどは機能にちなんで名付けられています。

ここでの私の推論は、単一の責任の原則に従うことです。これは、基本的に、1 つのクラスには変更する理由が 1 つある必要があることを意味します。モデルの後にメーラー/オブザーバーの名前を付けると、複数の機能をサポートするクラスになるため、変更の理由が複数になります。

于 2012-07-17T09:09:45.957 に答える