First off, the way OOP is taught exposes it flaws. It is always introduced by using examples like âoeanimalsâ or âoevehicles. You are walked through adding things like âoespecies,ââoenumber of legs,â âoesound,â until you have designed a dog, and a cat, and a fish. Or you create cars by specifying âoenumber of doors,â âoecolor,â and so on. Funny...Iâ(TM)ve never been asked to create an animal on the computer. Or a car. Now, I can see where OOP has value for some projects. A GUI, or a graphics program, where you are actually working with things that are logically expressed as objects, but it becomes a mess for other purposes. You find yourself constrained to express things as âoeobjectsâ that are more easily, and naturally expressed in other ways. You spend way more time trying to follow rules than creating an efficient program. This sort of thing has been around for a long time. Years ago, when Pascal was common, there was a rigid rule that you never, ever, use a goto. Now, this made sense in many situations. Having your code hopping about all willy-nilly, could cause horrible problems. On the other hand, in a program I was working on, I encountered a situation where using a goto was the simplest, logical answer. More modern programming languages would not need it, but as I tried to avoid it, I realized that it would require not only a massive re-write, but would also result in far more convoluted logic, and much more code. This was in the days of single sided floppies, and relatively small amount of memory. A 10 meg hard drive was very expensive, and most programs ran off one floppy disk, and if you were lucky, you had a second for data. Otherwise, you did a lot of swapping.
Having to follow rules that are carved in stone is not conducive to good programming. I had a co-worker who refused to accept that a single goto that worked, and save time, money, and a great deal of my sanity was preferable to blindly following some imagined divine edict that he seemed to think was necessary for the universe to self-destruct.