This is something that tends to get my goat a little in some instances, so I apologise if I get a tad ranty.
We had a recent discussion on cfaussie about the this scope in CFCs, and whether or not it was an appropriate place to store data. Regardless of what the outcome of that conversation (and we all have varying opinions on the topic), there was one thing that became very prevelent to me:
There seems to be a bunch of people out there trying to write OOP code, without a full understanding of OOP concepts.
Unfortunatley I think that this is one of the pitfalls of CF – because it is so easy to write code, people can often think that they can just 'work it out on the fly' and they will be just fine.
Sometimes this is true – and sometimes it isn't. I know quite a few proficient coders that have come to many of OO's basic concepts through trial and error, but I don't think it is the most efficient way of doing things.
The simple fact of the matter is – OO concepts have been around for many years, so why would you try and guess them when you can find them out by studying a OOP language?
If you want to do OOP Programming with ColdFusion, go and study an OOP Language, and bring the theory of it back to ColdFusion.
I cannot possibly encourage this enough. Doesn't matter if it's Java, C++, Eiffel, SmallTalk, whatever. What you are looking for is the concepts and theories.
Basic software design concepts and terms such as:
I feel should be understood before really useful OOP Coldfusion code can be developed.
By undertaking some Object Oriented training of some kind, I can assure you that many pieces of software design will make so much more sense to you, and will become a far greater ColdFusion coder because of it.
I just want to make clear here as well – I am NOT saying that if you don't understand these terms or concepts, you are a bad coder, or that you write bad software. Far from it. People have different backgrounds, and different skills and come at things in different ways. So I apologise if I have offended anyone.
I just want to make sure that all of us that talk about software (and web development is software development) use the language, terms and vocabulary that have been around for many years.