As you all know, I'm heavily biased towards the hardware side, but much
of it is the same there...
OO may be *an* answer, but it's discipline and
clear thinking that
will get you where you're going. Where things start to get ugly is
Agreed... 'Banning' certain things becuase they make code (or hardware)
difficult to undersnd or maintian is silly IMHO. I've sene pefecrly
understnadable progeams with GOTOs (or their equivalent). I've seen right
messes trying to avoind them (condtionals around just about everything).
I've sene right messes of hardware built with monostables all triggering
each other so if one drifts a bit the whole lot falls over. And I've seen
them used properly. I've seen a right mess which claimed to be a state
machine too...
when "enhancements" are added to existing
code. Pride insisted that
Again I think it's a matter of (good) judgement. You can add small extra
feautres ot hardware or software without problems. But as you said, if
you want a major change, it's time tore-think the deisng from the start.
it was necessary to start the design process all over
again when
enhancements that changed the fundamental nature of the prograom.
That's exactly what budget-conscious development managers didn't want
to hear, but it did make sense.
I would add soemthing else that managers don't like, and that is that
using 'standard solutions' is not always best. Of course subroutine
libraries are a Good Thing. But over-use of them, when you mess about wit
hthe problem so that you can use one library routine after another, this
routine for this case, and that routine fo thtat case, often makes a less
reliable solution than writing the special routine to solve that problem.
Similarly in hardware, I don't like starting from a stnadard module
(microcontorler PCB, etc) and somehow making it fit the problem. I find
it better to actually think of the solution.
-tony