Perl: the Markov chain saw | |
PerlMonks |
Re^2: Modules for autogenerating accessor/mutator methodsby magog (Beadle) |
on Jun 05, 2005 at 19:28 UTC ( [id://463756]=note: print w/replies, xml ) | Need Help?? |
The blogger agrees that you should make your object's data available to the outside world in a way lets you change the underlying implemtation when you need to. In Java, it seems like the "best practice" is to copy and paste a bunch of identical get/set methods. The blogger seems to be against copying and pasting when native language features can give you the same benefit. With Python (apparently) you can use the built-in features to make public attributes that can be transparently upgraded from simple attributes to get/set methods, without changing the API:
Behind the scenes this can be implemented by a simple attribute variable or a get/set method. The user of the object doesn't care.
This feature isn't built in to Perl 5. If you break encapsulation and access the underlying hash keys directly:
Then you can't protect the access without a tied hash. On the other hand, if you wrap the accessor in a method:
Then you have to copy and paste multiple identical get/set methods. The better solution is to let a module generate the methods for you. For instance, Attribute::Property (which looks excellent, BTW - thanks for pointing it out, wolv!), automatically makes methods that are assignable like hash elements:
When you need to upgrade 'email' to do some validation, you can change the accessor into a full sub:
Michael
In Section
Seekers of Perl Wisdom
|
|