[Cascavel-pm] Refactoring Perl 1 - Extract Method
Nelson Ferraz
nferraz em gmail.com
Segunda Junho 25 03:54:50 PDT 2007
Exemplo de refactoring em Perl:
sub print_owing{
my $self = shift;
my $e = $self->{_orders}->elements();
my $outstanding = 0.0;
# print banner
print "**************************\n";
print "***** Customer Owes ******\n";
print "**************************\n";
# calculate outstanding
while ( $e->has_more_elements() ){
my $each = $e->next_element();
$outstanding += $each->get_amount();
}
# print details
print 'name: ', $self->{_name}, "\n";
print "amount: $outstanding\n";
}
Se transforma em:
sub print_owing{
my $self = shift;
$self->print_banner();
my $outstanding = $self->get_outstanding();
$self->print_details( $outstanding );
}
sub print_banner{
my $self = shift;
# print banner
print "**************************\n";
print "***** Customer Owes ******\n";
print "**************************\n";
}
sub print_details{
my $self = shift;
my $outstanding = shift;
print 'name: ', $self->{_name}, "\n";
print "amount: $outstanding\n";
}
sub get_outstanding{
my $self = shift;
my $e = $self->{_orders}->elements();
my $result = 0.0;
# calculate outstanding
while ( $e->has_more_elements() ){
my $each = $e->next_element();
$result += $each->get_amount();
}
return $result;
}
Este é o "extract method".
http://www.perlmonks.org/?node_id=622705
[]s
Nelson
Mais detalhes sobre a lista de discussão Cascavel-pm