6 ms·
You know it's nice reading a criticism of something that has an alternative solution offered rather than just going "hey MVC is terrible and you're an idiot for
by nicholassmith 14y ago
You know it's nice reading a criticism of something that has an alternative solution offered rather than just going "hey MVC is terrible and you're an idiot for using it".
I do however think there's still great benefits to MVC, if you're shovelling code into controllers and can't make it work like it should then MVC is not the right design pattern for the project. Like every other pattern it'll only work when it works, but MOVE sounds like an interesting addition that I might have a play with.
- mitchty 14y agoI was hoping for a few examples of where it does better than mvc to demonstrate where it may be applied over mvc.
- jerf 14y agoMVC is terrible for web apps (in the original local GUI domain it's fine for some things), you aren't an idiot for using it because you're probably not actually using it but rather only something loosely inspired by it, and the solution is simply DRY. MVC at its best is simply one manifestation of DRY, but there's no real reason to get too stuck on it when with practice DRY is something you should just always be doing. If MVC falls out of that, great, but if not, so what? (The original MVC is actually useless for web apps because there is no client-server connection in it, and that profoundly changes everything. There's no point in trying to bash a GUI top-level design into a new client-server world, especially when DRY is just sitting there, waiting for you to use it.) MVC, MOVE, all the variants just obscure your vision from the underlying and far more important principle.
- Xurinos 14y agoI suspect this is because most people do not actually understand what MVC is and how it applies to server-client relationships; in fact, the wikipedia article on MVC is slightly off on the subject, assuming one accepts the original Xerox description as a source. Try not to wrap the entire complicated application into one big MVC umbrella because that will just confuse. There are actually multiple processes involved, and each has its own MVC. The big epiphany for me was when I realized that the server has its own MVC, and the browser has its own MVC. The server's output is the View for the server and the Model for the browser. For a complex set of objects in a given Model, the final output of those objects is their View, and the consumer of that output uses it as a Model. In theory, any View can be a Model for the thing accepting the View, so in a complex system, you have a chain of MVCs. And one can further imagine that applets written in JavaScript have their own MVC unit. I work on complicated, large-data web apps sometimes daily. MVC has been a fine model for them and has kept my group's organization clean and modular.
- saraid216 14y ago> in fact, the wikipedia article on MVC is slightly off on the subject, assuming one accepts the original Xerox description as a source. People complaining about factual inaccuracies on Wikipedia annoy me. It's Wikipedia. The entire point and purpose of it is to fix what you know is wrong. For once, I'd like to see, "I just touched up the Wikipedia article on this subject to explain it a bit more accurately."
- Xurinos 14y agoNaturally, I meant nothing personal to you. Would a bug report suffice? ;)
- wahnfrieden 14y agoThis can be a really frustrating experience with articles where most people hold misconceptions about the concepts. I spent a few months off and on on the REST article and managed to clean it up a fair bit, but I was constantly working against militantly ignorant people. Last I checked it's somewhere between accurate and bullshit, one of the poorer resources for understanding either actual REST or more popular RPC style APIs.
- mortenjorck 14y ago>"I just touched up the Wikipedia article on this subject to explain it a bit more accurately." "But then all my changes were reverted by an overprotective editor; I brought the issues up on the talk page, but my comments were brusquely dismissed."
- saraid216 14y agoYour changes would still be in the edit log, and someone more savvy in Wikipedia politics would have the opportunity to get your changes cemented. Said person might be another HN reader who is less knowledgeable about the subject matter. If you don't make any changes, he has nothing to work with except some random whining. (And yes, that's how it works in the real world, too.)
- notJim 14y ago> MVC is terrible for web apps Can you expand more on this? I've used MVC for webapps quite a bit, and find it to work well.
- andrzejkrzywda 14y agoIt's more than a definition issue. You haven't used MVC, you have probably used Model2. The post we're discussing is about MVC. http://andrzejonsoftware.blogspot.com/2011/09/rails-is-not-mvc.html http://andrzejonsoftware.blogspot.com/2011/09/rails-is-not-m...
- andrzejkrzywda 14y agoThank you for this comment. I was slowly losing my faith in HN developers knowledge. Server MVC (Model2) is not the same as client MVC (the classic one). They are totally different architectures. Patterns that apply to one, don't apply to the other. You can't get MVC with Rails/Django/Struts. You can get a nice MVC with a Single Page Application or with a desktop app. A similar discussion was already here: http://news.ycombinator.com/item?id=3035549 http://news.ycombinator.com/item?id=3035549
- nicholassmith 14y agoThis times 9000. I've noticed a trend amongst developers to jump at patterns and spend all their time trying to shoehorn their project into it because someone vaguely respected mentioned it on Twitter. Patterns are great, but slavishly following them, and not understanding that there's often multiple patterns for different circumstances can lead to coding dragons.
- larrybolt 14y agoI think this article goes even beyond the "is terrible and you're an idiot for using it", it actually "states" MVC is dead. Honestly I'm sick of reading all those "x is dead"-alike articles. Hey, if you believe the web PHP is dead, Java is dead, C is dead.. etc... Technologies, patterns, languages or structures don't die, in fact, if you really fancy you could write your application using C code and compiling it into asm, why not? If it works, perfect! There are enough examples out there where old technologie works. And I think people tend to be spending too much time thinking why something is imperfect, or how to do it better, instead of actually making stuff that rocks. If you really do have the need to improve something, prove it! Make a useable example, write a framework, library or new language if you really need to.
- saraid216 14y ago> And I think people tend to be spending too much time thinking why something is imperfect, or how to do it better, instead of actually making stuff that rocks. I was with you until this. I think it's actually important to think about where flaws are and how improvements could be made. The literary critic Howard Bloom actually argues that many of the best creative works are agonistic: they take a previous masterpiece and say, "I could do better," and from that claim do. The produced work ends up being a response, saying, "That was good, but here's your mistake, here's how it can be done better, and look how well it turns out."
- ascendant 14y agoMVC doesn't fit cleanly into the world of webapps, but it's still a lot better than business logic in view code, or monolithic classes than handle all HTTP interaction, etc. I've seen some really terrible Model 1 code in my lifetime.