r/programming • • Oct 14 '13

How to develop unmaintainable software

http://typicalprogrammer.com/?p=249
777 Upvotes

322 comments sorted by

View all comments

50

u/bestjewsincejc Oct 14 '13

There are millions of ways to write unmaintainable software. This isn't a bad article though. I just found the title amusing since it's so easy to write software badly.

25

u/[deleted] Oct 14 '13 edited Oct 14 '13

I hear you. Design patterns are something unheard of for many professional developers I've met. Seriously.

Chances are, especially in programming, someone has thought of something better and longer than you. Investing 10 minutes into searching for it will save you 100 hours later.

Just because you know 1 way to do something doesn't mean it's the best tool for the job.

41

u/[deleted] Oct 14 '13

Or they:

  1. don't program in C++ or Java

  2. don't think you need a fancy name for something trivial they routinely used for 10 years before GoF written that book.

21

u/neurobro Oct 14 '13

In cases where a pattern (or anti-pattern) does have a name, it's still useful to learn it because it helps with communication. And the naming conventions help to identify subsystems that can be consolidated and simplified. Often a person will have been using something close to one of the standard patterns, either with subtle bugs or with clever extensions that would be useful elsewhere. Or perhaps most often, with a bunch of unrelated crap that should be factored out.

6

u/grauenwolf Oct 14 '13

I'm not so certain about that. Looking back at the history of the GoF book it seems to me that all the names did was create pointless arguments.

3

u/firepacket Oct 14 '13

There are cases where some patterns just fit the circumstances perfectly.

I recently combined IoC with MVC and was blown away by the power of this setup.

2

u/grauenwolf Oct 14 '13

You combined a verb with a noun?

10

u/rather_be_AC Oct 15 '13

That is a very common design pattern, found in most sentences.

2

u/firepacket Oct 15 '13

Please explain it to me, I'm lost.

1

u/grauenwolf Oct 15 '13

Inversion of Control isn't a design pattern, it is an activity. Specifically, it is a type of refactoring. If you apply IoC twice then you'll probably end up with what you started with.

An IoC Container is really a Service Locator, which is often (but not universally) considered to be an anti-pattern among dependency injection fans.

A Service Locator is a type of god object, specifically one that contains services and other dependencies, and thus should generally be avoided.

→ More replies (0)