[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