I'm at, of all places, the Scandinavian conference on Java And
Object-Orientation (JAOO).  Somebody stumbled upon the How To Be Lazy
tutorial and thought I knew something about design methodologies.
If nothing else it has the unique advantage of not being in New York.

So who do I meet here but Martin Fowler, Mr. Refactoring.  I managed
to bend his ear for a while on the subject of making a refactoring
code browser for Perl, like Smalltalk has.

Turns out we're COMPLETELY overthinking the problem.

For example.  How do you change the name of a class's method and all
places that method is called if two classes have method of the same
name?  ie.  You've got Foo::this() and Bar::this() and you want to
change Foo::this() to Foo::that() but leave Bar::that() the same.

What do you do with:

    $obj->this

Having no idea what class $obj might be of, you have to just eyeball
it.  So that kills the possiblity of automated Perl refactoring.

-->But it doesn't<--  It turns out Smalltalk has the *exact same problem*,
and Java does, too.  How do they solve it?  *They don't*.

What they instead do is tell you all the implementors of a given name
(so for 'this' it would tell you 'Foo' and 'Bar').  Then you have two
choices.

    1)  Change this() to that() in both 'Foo' and 'Bar', and change all
        instances of $obj->this to $obj->that.

    2)  Walk through each call to $obj->this and decide if it should
        be changed to $obj->that.

That's it.  And the refactoring browser just helps you with the
mechanics of that.

THAT'S SO EASY!  If it works for them, it can work for us.


So, I can handle the underlying mechanics no problem.  Who's good at
GUIs?


-- 

Michael G. Schwern   <[EMAIL PROTECTED]>    http://www.pobox.com/~schwern/
Perl6 Quality Assurance     <[EMAIL PROTECTED]>       Kwalitee Is Job One
First day in Prison
Back behind the shower door
Adhesive applied
        -- ignatz

Reply via email to