On Thursday, 1 August 2013 at 00:47:43 UTC, H. S. Teoh wrote:
Most non-trivial loops in imperative code have both, which
makes them
doubly prone to bugs. In the example I gave above, the mismatch
between
the code structure (a single loop) and the file structure (three
sequential sections) often prompts people to add boolean flags,
state
variables, and the like, in order to resolve the conflict
between the
two structures. Such ad hoc structure resolutions are a
breeding ground
for bugs, and often lead to complicated loop conditions, which
invite
even more bugs.
T
I agree, and to be honest, loops have given me more than one
headache. It's so easy to lose track of what is going on where
and why. And if you have ever had the pleasure of adding to or
debugging code that handles three or more different issues in one
loop, then you will know how mind boggling loops can be.
Your example is very good (you should write an article about it)
and similar examples occur in web development all the time
(creating tables, lists etc). I once wrote an event calendar for
a homepage and _partly_ disentagled the loop for simplicity's
sake. I say "partly" because it is still a bit "loopy". And I
guess this is what component programming is all about,
disentangling code.
The only difficulty I have is the opposition to OOP. I don't
really see how the two concepts are mutually exclusive. OOP can
benefit from component programming and vice versa.
Component programming is a good choice for web programming where
loops abound. I'm tired of the infinite loops (pardon the pun
again) in JavaScript and the like. Sure there's gotta be a better
way.