I can just as easily use the model class from a command
line script or a desktop GUI app or something.
Quick definition clarification: if it's not in Cat, it's not a
Model. It's unrelated code like any other piece of Perl. Model means
it's bound to the app regardless of what is underneath. You can bind
any code that provides data or services as a Model. The Adaptor stuff is precisely to do that: glue so that you don't have to duplicate external code or write code from scratch to bind it into your app.
I'll start to sound like a broken record soon. This is the summation of
the issues we've discussed + a new one about testing I should have
mentioned already-
- Excepting setup you will end up with 2-5 times as much code and
much of it boilerplate, violating DRY and increasing the likelihood of bugs sneaking in.
- You might change FileCat to the new and improved FileCat2 at some
point. With the Model you now have one line of code to edit
instead of possibly dozens or even hundreds.
- This reeks of code smell-
# APPLICATION -------------------------------------------------
name: "OH HAI"
default_view: "TT"
default_model: "DBIC"
file_directory: "some:/place/else"
- This doesn't-
# MODELS -------------------------------------------------------
Model::FileCat:
args:
file_directory: "some:/place/else"
- You will never conceptually separate your code from your data
and your presentation. You will think exclusively in "scriptese." You will
continue to give traditional, inline code preference over strict
adherence to the MVC. Dogs and cats, living together.
- You cannot unit test (as flexibly) without the Model; with a Model, you can reset
the Model to whatever you want via config: mock, test fixtures, etc; with
hardcoded modules, you may have to resort to contortions to test
things. This means you are drastically less likely to test. This means
FAIL. :(
This is Perl. Do it the way you want to do it. Just like life,
though, a little discipline up front, even when it seems unecessary,
can repay greatly down the road in unforseen ways. I'm not the MVC
cop so this is really just advice but I've been doing this almost 12
years now and Catalyst for 5 and the advice is good. :)
Google for "catalyst model" and read some of the blog posts,
tutorials, and list threads. You'll get, one hopes, a deeper feel for
things than from the plain Pod. The new Catalyst book
ISBN 9781430223658 is also quite worth getting.
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.