A rose by any other name?
I posted an article about using models to assist in creating leaner, meaner controllers. It resulted in a lively conversation in the comments that spawned an interesting rebuttal from Rob Conery that essentially says I am full of it, and the names I attach to the patterns I use are wrong.
This is probably true.
With that truth understood, I also don’t go around pulling made up nonsense definitions out of my ass. The models bit is battle-tested real working patterns, on a large project, with a good sized team. The terms I use come from a mix of sources, with roots in GoF patterns and through my continued education. It is not personal terminology.
Having said, I’d rather see developers build kick-ass apps that are well-designed and follow separation of concerns, than see them waste time arguing about MV* nonsense. And for this reason, I hereby declare AngularJS to be MVW framework – Model-View-Whatever. Where Whatever stands for “whatever works for you”.
Angular gives you a lot of flexibility to nicely separate presentation logic from business logic and presentation state. Please use it fuel your productivity and application maintainability rather than heated discussions about things that at the end of the day don’t matter that much.
The whole situation reminded me of this post from Igor Minar, regarding AngularJS’s status as an MV-WHATEVER framework. For whatever reason, people name things differently for different reasons. Naming is hugely important for our common understanding of things. Up to a point. To take an example from non-coding life, on a recent trip to Italy, I had no clue what the name of anything was. A combination of handwaving, pointing, and nodding was more effective than one might think. In some ways, this is true for programming as well. As long as we eventually agree to build the same thing, it will probably be OK.
The conversation came to an abrupt end. My son witnessed the tragic and brutal death of a man that we both have a lot of respect for. I was involved with notifying people of the incident, and it was a really difficult situation. The Disqus notifications were too much, so I disabled the comment thread. Rob subsequently attempted to delete his comments (which is a shame, but understandable) so he is the “guest” commentor. Normally I love a good debate, and this is the first time I’ve ever done this sort of thing. Rob expressed extreme displeasure and took it as a personal insult. Hopefully he understands that it is not, and my desire is that we pick up the conversation again one day. Perhaps via a different medium?
I find it highly interesting that two people could have such wildly different world views when it comes to naming patterns. It would be great to get to the bottom of it, and I suspect in the end we would both be smarter for it.
I’ve got a fairly strict rule about not posting non-technical stuff here, so this post is an anomolly. I won’t make a habit of stopping conversations, and wanted to put this out here, as it relates directly with this space.