Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine
 
PerlMonks  

Re: A new take on affordance.

by Caillte (Friar)
on May 16, 2002 at 15:35 UTC ( #167029=note: print w/ replies, xml ) Need Help??


in reply to A new take on affordance.

Having the code for an object open and publicly readable is both an advantage and a disadvantage, sure, but from looking around at the other perl programmers I have known it is not really a problem. Sure, you can open up the object, look around, even edit it to suit your own needs, and you can access variables within the object without going through the method interface. However most people dont and, I think, with experience even those who do will stop over time. The reasons for this become obvious as you become more experienced with the rationale behind OO design. While you could access the data directly, avoiding the methods, it is not a good idea. What if the designer changes the data type between revisions? Such a change is perfectly acceptable in OO design as the underlying data is supposed to be opaque to the user of the object. This means that thingy.pm version 1 could store it's data as a scalar while version 2 stores it as part of a hash. However, if thingy.pm has been written correctly, thingy::get_data will return the same thing regardless of version.

Once you know this then it quickly becomes a good idea to just use the methods and leave the data as it is.

On the other hand, what perl programmers have over C++ (for example) programmers is direct access to the source code of that object. Now, while playing with it is not a good thing, these modules then become a vast and wonderful knowledge base that the programmer can dip into at will to help solve his or her problems.

So, if you have any sense, pretend that you cannot see into a perl object, but also make the most of the fact that you can to become a better programmer ;)

I did, and still do ;)

This page is intentionally left justified.


Comment on Re: A new take on affordance.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://167029]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others surveying the Monastery: (7)
As of 2014-10-25 19:55 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    For retirement, I am banking on:










    Results (148 votes), past polls