Making the case for repeat

Steven D'Aprano steve at
Mon Jun 8 05:44:30 EDT 2009

On Mon, 08 Jun 2009 18:30:37 +1000, Ben Finney wrote:

> Steven D'Aprano <steve at> writes:
>> On Sun, 07 Jun 2009 16:46:23 -0700, Raymond Hettinger wrote:
>> > We factor code to eliminate redundancy, but that is not always a good
>> > idea with an API. The goal for code factoring is to minimize
>> > redundancy. The goal for API design is having simple parts that are
>> > easily learned and can be readily combined (i.e. the notion of an
>> > iterator algebra).
>> Wonderfully said! That has articulated something which I only recently
>> came to appreciate, but couldn't put into words.
> As originally defined by Martin Fowler, re-factoring always means the
> external behaviour is unchanged <URL:>.
> So, there's no such thing as a re-factoring that changes the API.
> Anything that changes an external attribute of the code is a different
> kind of transformation, not a re-factoring.

Possibly a *factoring*, without the "re-", just like Raymond said.

Also, keep in mind that when creating a new API, you have no existing API 
to re-factor.


More information about the Python-list mailing list