On 3/27/2011 12:22 PM, Tomas Doran bobtfish-at-bobtfish.net |Catalyst/Allow to 
home| wrote:

And I would say that sending an email is a state change, and behavior of the application domain here.
That's a stretch, because you can argue that any side-effect is a change of state to the universe at large and there happens to be no accessor to read the results of the change. It clearly matches "side effect", not "state", unless you stretch the definition to make all side effects into state and lose all distinction.


An arbitrary helper subroutine used by the Controller is not a Model. Since it is side-effect only, it matches one of the links in the graph (Controller TO Model) so it "fits" in the architecture provides the proper connectivity. But that is a kludge, not its proper usage.

Again, I think that the sending of email from the application is _very much_ behavior.
If "behavior" includes causing side effects, sure. That is certainly something the Controller is allowed to do, and is the Controller's responsibility.


In future you may want to replace the implementation of it, or wrap it with extra functionality (e.g. to count the number of emails sent), or reuse it in an application context beyond the web app (e.g. sending email from a batch script).

So?  That is an argument for encapsulation and abstraction, not for making it a 
Model.


With a model all of these things are not only possible, they're easy, and you've got a framework for the abstraction and use outside Catalyst already provided...

I think we are in agreement that using the auto-discovery/loading, and the dissemination of settings, and whatever else a Catalyst component does for you, might be handy for writing helper code, as opposed to making it a plain Perl module.

But that doesn't make it a "Model". Saying it is (to promote auto-discovery and loading) is just a hack, done for that purpose only.

_______________________________________________
List: [email protected]
Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
Searchable archive: http://www.mail-archive.com/[email protected]/
Dev site: http://dev.catalyst.perl.org/

Reply via email to