in reply to Seek Help Refactoring

Perhaps surround the push @foo, [ @bar ] ... with something like:
if ($mode = 'alfa') { push @foo, [ @bar ]; } elsif ($mode = 'beta') { push @foo, [ @bar ] if $self->{baz} eq $gamma; } else { die "Unknown mode: $mode!"; }

CountZero

"If you have four groups working on a compiler, you'll get a 4-pass compiler." - Conway's Law

Replies are listed 'Best First'.
Re^2: Seek Help Refactoring
by jkeenan1 (Deacon) on Apr 03, 2006 at 00:41 UTC
    Thanks, CountZero! While there was something of interest in all the comments, yours was the most immediately applicable because it clued me into what to do right at the three points the push call was made and thereby enabled me to refactor out all the repeated code. In my real code, it meant that I was able to refactor the methods so they looked like this:

    sub all_segments { my $self = shift; return $self->_gapfill_engine('all'); } sub all_gapfillers { my $self = shift; return $self->_gapfill_engine('gap'); } sub _gapfill_engine { my $self = shift; my $mode = shift; ... # foreach and if loops (next stage in refactoring) # do one thing if $mode eq 'all' # do another thing if $mode eq 'gap' return \@segments; }

    ... which is what I was aiming for. Thanks again.

    Jim Keenan