in reply to Generally accepted style in Perl objects

One of the benefits of OO programming is abstracting the interface details from the user. Provide methods for them to update this information rather than allow them to mess directly with the object. What if you need to change the internals of the object? Then, all of the code that accesses it directly is in danger of being broken.

I have one module that used to allow programmers to turn the modules function off and on. Internally, you could have done something like:

$object->{ _on } = 0; # equivalent to the following: $object->off;
However, as time went on, I realized that having this module's function "suppressed", with local overrides allowed, was superior to just "off" and "on." As a result, internally, the the "_on" key was no longer available. It was changed to "_supress", with potential values of 0, 1, and 2. However, for purposes of backwards compatibility, I still had the $object->off functionality available. No old code broke, but the module's internals were different.

Cheers,
Ovid

Join the Perlmonks Setiathome Group or just click on the the link and check out our stats.