Hey all, i'm writing a pretty specific reporting tool for some data crunching i'm working on, and stumbled across a little issue that i'd missed before. Anyway, lets say I have a class that's implemented with a hashref, that includes the data member "Big_List", i.e.
$self->{'Big_List'} = [many elements];
Then, in another method, i need to operate on each element of the big list. I could write a method called GetBigList, and methods that want to operate on the list could access each element by looping through the return results of GetBigList()
sub GetBigList {
my $self = shift;
return $self->{'BigList'};
}
sub SomeOperation {
my $self = shift;
foreach my $element ( @{$self->GetBigList()} ) {
# do stuff to element, etc.
}
}
... and encapsulation is happy.
But, there is a lot of overhead because GetBigList() returns a copy of the list to SomeOperation(). So, i could rewrite SomeOperation() to look like:
sub SomeOperation {
my $self = shift;
foreach my $element ( @{ $self->{'Big_List'} } ) {
# do stuff to element, etc.
}
}
And i have broken encapsulation, but my scripts should incur much less overhead.
I'm really on the fence on this one, i'm generally VERY strict about not breaking encapsulation, but this situation may call for it. Of course, breaking encapsulation usually comes back and bites one on the posterier as updates occur.
Any thoughts?
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.