16/17 |
Michael Robinson
|
(One of the recommendations was not to make variables part of your interface. I did that just the other day. Ooops.)
Instead of:
sub new { my ($class, ...) = @_; ... return bless {}, $class; } sub get_foo { my ($self) = shift; return $self->{foo}; }
Do this:
{ my %foo_of; sub new { my ($class, ...) = @_; ... return bless \do {my $anon_scalar}, $class; } sub get_foo { my ($self) = shift; return $foo_of{$self}; } }
Magically, you have encapsulation, and all that.