From: Alder Green Date: 2006-06-13T06:43:40+09:00 Subject: Re: Why the lack of mixing-in support for Class methods? On 6/12/06, transfire@gmail.com wrote: > > Daniel Schierbeck wrote: > > Logan Capaldo wrote: > > > Then you have multiple inheritance. > > > > Yes. > > Not really. Mulitple Inheritance provides orthogonal heirarchies. > Ruby's is strictly linear. If what you say were true then Ruby would > already be MI since modules can be used to add behavior to both class > and instance levels, and readily associated together as well, as Ara's > example clearly demonstrates. To think this consititutes MI and thus > making specialized restrictions of code separation to repress it, only > serves to complixify the situation, not the other way around. It's like > trying to prevent someone from getting to their destinatin by not > allowing them to turn right --they'll still get there, they'll just > turn left three times. > > T. > > > Exactly. 1. Multiple module inclusion is not multiple inheritance. Even if you think it is - Ruby already has it. So unless you're arguing for its removal - and nobody seems to want that - it's a moot point. 2. You may debate whether mixing-in class methods is a "bad" practice in some sense, and should therefore be discouraged - or at least not encouraged by adding elegant, clear and standard language support for it. But: 2a. It can't be that bad, since nobody is arguing that it should be disallowed completely. 2b. It doesn't seem to be widely considered "bad", at least not by several skilled Ruby hackers. Rails is highly regarded codebase, and the ClassMethods hack is all over it. Rails is the only codebase I'm (vaguely) familiar with, but posts in this thread indicate that other good codebases use similar hacks to accomplish the same programming strategy. 2c. Of course, one may argue that even if mixing-in of class methods is done by many skilled Ruby hackers, and is a vital programming strategy in many high quality Ruby programs, it is still "bad" in some theoretical sense. This is a subjective argument that cannot be resolved. But one of the major attractions of Ruby for me is the TIMTOWDI philosophy. I did not think Ruby would try to discipline its coders by inconveniencing them. Not that it would matter much - mixins would continue to be used for classs method inclusion. So in short, since it seems many people are mixin class methods, it would be nice if it were handled by a standard - hopefully convenient, elegant - language feature. -- -Alder