"Zach Dennis" <[EMAIL PROTECTED]> writes: > On Tue, Nov 25, 2008 at 11:08 AM, Mark Wilden <[EMAIL PROTECTED]> wrote: >> On Tue, Nov 25, 2008 at 5:41 AM, Matt Wynne <[EMAIL PROTECTED]> wrote: >>> >>> Sorry, I know this is off-topic, but I'd really like to know what the >>> revered ruby-hackers who read this list think. >>> >>> See >>> http://ozmm.org/posts/class__self_is_harmful.html >>> >>> I have adopted class << self, partly from reading RSpec and Cucumber's >>> code as I learn Ruby. I personally think of class methods (or 'static' >>> methods) as being in a kind of 'holding pen' waiting to be factored off onto >>> a proper class of their own, so I rather like the clear way you can group >>> them in a 'nameless' metaclass ready for the exit door. >> >> The nature of class methods in Ruby (as instance methods of the class's >> eigenclass) is for most purposes an implementation detail. It adds nothing >> to understanding to open the eigenclass inside the class's definition in >> order to add class methods. It may save some typing, and it does help when >> searching (as David) says. Nevertheless, I regard the practice as a bit of >> an affection - 'look at me, ma, I'm opening the eigenclass!' - or as the >> imitation of an affection. It confuses newbies to no purpose, and confuses >> everyone when 'class << self' has scrolled off the top of the screen. > > A lot of things confuse newbies. I don't think that's a very good > point for why you don't do something. #each confuses newbies, should > we also refrain from using that? Of course not. > > Educating people so they understand why and when it should be avoided > is better then raising a fire alarm (unless it's really a fire). > Contrary to your statement though, I don't use class << self to feel > special, and my ma could care less about how I code. ;)
I thought it was just that class << self def method1; end def methdod2; end def methdod3 end def methdod4; end end becomes confusing as soon as those method definitions fill up a screen. def self.method1 makes it instantly clear that it's a singleton method. That's what I do and why I do it, anyway. Pat p.s. using class << self to show off is weak if you're just defining class methods. Use it on an instance and then send(:define_method) for some real points! _______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users