Gavin Sinclair [mailto:gsinclair / soyabean.com.au] wrote:

> Elegant solutions are generally well 
> factored, rather than expanded all over the top level.  One 
> should aim to keep like things together, and different things apart.
> 
> There are two possible factorings.  Have Object#methods 
> return a specialised object, thus:
> 
>   foo.methods.private
>   foo.methods.all
>   foo.methods.new
>   foo.methods.singleton
>   foo.methods[:new, :protected]   # if you need combination
>   # etc.
> 
> The other possible factoring is as above:
> 
>   foo.methods(:new)
>   foo.methods(:private)
>   foo.methods(:singleton, :private)
>   # etc.
> 
> Aesthetically, I think I prefer the top one.  But even the 
> second one is far preferable to the current state of Ruby, to my mind.
> 
> In general, you dislike using symbolic arguments to tune a 
> method's behaviour.  I like it, and consider it quite 
> consistent with the general practices of good programming.
> 

+1

> Cheers,
> Gavin

kind regards -botp