Generally speaking, when methods require too many arguments,
thats a symptom of a
God Object.
Refactoring a
God Object
is going a few steps past
the "Currying" concept. In a nutshell, objifying more things
gives you grainularity on state. Using one large object prevents
structure form arising out of the chaos of your program
(well, any program, I'm just being dramatic).
Good user interfaces often take the form of creating one
object, passing it options, then passing that object
as an option to the constructor of another object.
Each object contains configuration associated with what
it represents in the world, and part of the configuration
of other objects is the configuration already performed
on existing objects. Pod::Tree and its related modules
are an example of this.
Feel free to email me at scott@slowass.net or markup the
wiki pages at perldesignpatterns.com - I don't read
comments, only headlines, and only sometimes. And
whoever is doing that thing that gives me experience,
stop it! I'm trying to lay low.
-scott