A little while ago I came across the following blog posts by John Kleijn
at phpfreaks:
Both of the posts are good examples of good and bad sides to blogging
about developing. First, the good parts:
- It's great to have someone list of a number of things that you can
check your own code for. Am I committing these mistakes? Could I
avoid the mentioned problems?
- It's also great to have some idea of where others are taking
development. Is there cool new stuff I should be trying?
The medium of the numbered list makes these things very accessible - you
glance through and read a bit closer if it catches your attention. You
get motivated to find out more. However:
- Why 10 points? Are there only 10 signs of crappy PHP software? Are
there just 10 ways to avoid writing crappy code?
- Is point 1 more important than point 10? Or?
In other words, these lists have the look of roadmaps: how to do this,
how to avoid that, get laid in 5 easy steps, blah blah. Another blog I
follow a bit, Boagworld, does this quite a lot.
What they should do is give you an idea of things but instead they often
end up looking like The Truth. Which leads me to a personal gripe.
1 sign that you're an arrogant coder thinking you know better than the
rest when in fact you don't
- Yelling and screaming at people for using or advising others not to
use singletons.
Singletons have to be the most misunderstood design pattern for all the
wrath they're getting. It's absurd to see the amount of abuse it gets
... and for what? The singleton is a pattern to make sure only one
instance of a class gets created. It is designed specifically to handle
the situations WHERE ONLY ONE INSTANCE should exist. So you know
instantly when you hear criticism like:
A database connection is probably the poorest example you could have
possibly chosen. What if I need two simultaneous connections?
Well, then you bloody well wouldn't have chosen the singleton pattern
would you now? ONLY ONE INSTANCE! HOW. HARD. IS. THAT. TO. UNDERSTAND??
I find it incredible that 'experienced' or 'senior' developers rail
against this thing - it's as if they've never used it but only seen
apparitions of the singletons evil brother. When you have a situation in
which a given class should only be created once but access to it is
needed in all parts of your app, the singleton pattern is not a bad
design - on the contrary, it's a good design. The point about design
patterns is not knowing them but knowing when and how to use them -
railing about the evil of the singleton pattern shows lack of knowledge
about it.
So please, if you're ever considering ranting on about how a given
design pattern (or something else) is evil then please, take the time to
actually understand it first. Then write your blog/article about how the
thing is actually not evil but should be used with care. Or go ahead and
write that guns kill people and if there were just no guns, there would
be no dead people.