****SPAM(11.2)**** [Tutor] Larger program organization
Brian van den Broek
bvande at po-box.mcgill.ca
Wed Feb 16 23:04:25 CET 2005
Terry Carroll said unto the world upon 2005-02-16 16:18:
> On Fri, 11 Feb 2005, Bob Gailer wrote:
>>Whenever you find yourself writing an if statement ask whether this
>>would be better handled by subclasses. Whenever you find yourself about
>>to write a global statement, consider making the variables properties of
> Bob --
> Brian already asked for an explanation of your first statement, and I
> found the ensuing discussion very instructive.
> Can you explain the second? As an aesthetic point, I hate globals, and
> I'd love a discussion with some examples of using class variables as a way
> of avoiding this.
Hi Terry and all,
I'm probably not the best person to explain this, but I've got a use
case that might help illustrate.
The thing that finally got me to write my first Class statement was a
procedural program where I had a hard to find bug.
I wrote a debug_report function which would print out an informative
report about the state of all the objects I suspected were implicated
in the bug. Then, I put debug_report calls at the suspicious places.
But, my procedural code had function call chains 4 or 5 links deep,
and at no level did any of the functions have access to all of the
objects of interest.
To make it work in purely procedural, I had to either make many
objects global or litter my functions with passing objects up and down
as parameters that weren't needed for the function's tasks, but simply
so debug_report could see them.
I made a class, put my functions in it, and suddenly, they all could
`see' the objects of interest without the passing and returning of
objects just for the sake of visibility. Some `self's sprinkled around
did the work instead.
So, even if you don't make use of further OOP features (as I am
learning to do on other threads), classes give you a namespace option
between globals and locals -- `continentals' if you like ;-)
HTH, and looking forward to more expert explanations,
More information about the Tutor