On Jan 8, 2006, at 5:47 PM, Steve Litt wrote:
> Personally, I'd NEVER gratuitously add a method or instance var to  
> a class at
> runtime. If I needed more methods than the class provided, I'd  
> subclass it.

I'm not sure I follow this.  You think that subclassing at runtime is  
better
in some way than simply adding a method to a class? It is hard to  
talk about
this stuff in the abstract.  For example, I feel differently about  
dynamically
adding methods to Array than I would to a class I created to solve a  
particular
problem.

I think it does take a certain amount of paradigm shifting to see  
solutions to
problems that involve dynamically creating methods in classes or on  
particular
objects.  Until you make that shift those facilities seem quite  
abstract.

For example, in Rails you can call methods like:

	Model.find_by_date
	Model.find_by_name
	Model.find_by_city
	Model.find_by_city_and_date

Those methods don't exist until you call them at which point they are  
defined
and added to the class.  It doesn't make sense to add *all* the possible
combinations as methods to start with, when you can just create them  
on demand.
Only a small subset of all the possible variations will ever by used  
by a
particular application anyway.  Using subclasses in this case doesn't  
help. How
would you decide which methods to put in the subclass?   You would have
to lock in some choices and that would prevent you from, for example,  
having
a fully dynamic query interface to your application.


Gary Wright