One of the rules that new coders should learn as early as possible in their training is to not make objects unnecessarily. The over use of objects is one of the many downfalls of the modern coder. Over objectifying your code leads not to re-use (as you’d hope for) but for obfuscation. Objects have there place in the agnostic coders arsenal of tools. But as with all tools, their use is limited, and definitely should be limited to the part of the problem domain that the use of objects can solve.

To take an example, the Java main function is an object. It has to be, the language demands it. But it doesn’t need to be that way. I’m not just picking on Java, but it’s the easiest example to take it’s needed for the simple “hello, world” that every text book will take you through.

But of course this isn’t restricted to Java, other OO languages are the same. But others are not. Take Python for example, a simple example is ‘print “hello world”‘, not complicated is it? And yet it’s in a language whose whole structure is OO based. So clearly using the best tool for the job is of paramount importance.

Most dynamic/scripting languages give you the option of pure OO or pure procedural, or a mix of both. Then again you can code like that in C++ too, so it’s really a matter of choice, which is one of the basic tenets of the agnostic way.

However, as long as you’re using objects for a reason, and that reason relates directly to the problem at hand, then use them, they are there for a reason, to be used. Just make sure you have a reason to use them, just like every other piece of code you build. If it’s not needed, dump it.