News for hackers. Stuff that matters.
Re:OO is not Computing, Newer is not More modern by swalsh on Monday April 30, 2012 @08:18AM (#3908886)
Most of object oriented programming to me feels like nothing more than trying to decide the best place to put something. As time goes on though, typically the 3rd iteration, there just is no good place to put this new thing. A redesign would be best, but I only have 1 week to finish this new feature.

So a project (well at least in my experience) progresses like this: "Wonderful architecture" > "glad I designed this project well, its' paying dividends!" > "hmmmm I never considered this paradigm before" > "new guy joins team" > "argh this code is crap"

Object oriented programming can be really elegant... but I can see why people hate on it.

Re:OO is not Computing, Newer is not More modern by hackinthebochs on Monday April 30, 2012 @10:10AM (#3909299)
I think you summed it up well. People hate object oriented code because it has an extra startup burden. It's hard to just dive in and start fiddling with code because there are many project-specific abstractions you need to understand before-hand. The new guy on the project has to spend extra time to "grok" the idioms of the project. I personally don't see this as a bad thing.

The fact is, abstraction is key to programming. People who have a hard time managing extra abstractions in their head probably aren't nearly as good of a programmer as they think.

Re:OO is not Computing, Newer is not More modern by tetha on Monday April 30, 2012 @01:26PM (#3910262)
On the other hand, people complaining about this don't realize it is very much the same in any other language.

Go ahead and just fiddle around in that million loc c codebase. Or that million loc java codebase. (and ignore for a second that that c codebase is a large compiler and that java codebase is an elaborate hello world). Or a hypothetical million line haskell codebase.

In C you have to understand modules, functions working on structures and functions controlling the architecture. In Java you have to understand class hierachies and classes or functions managing the control flow. In haskell, you have to understand abstract data types, type classes and monads and functions managing control flow.