[rspec-users] class << self considered harmful... really?

Zach Dennis zach.dennis at gmail.com
Tue Nov 25 11:34:10 EST 2008

On Tue, Nov 25, 2008 at 11:08 AM, Mark Wilden <mark at mwilden.com> wrote:
> On Tue, Nov 25, 2008 at 5:41 AM, Matt Wynne <matt at mattwynne.net> 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. ;)

Zach Dennis

More information about the rspec-users mailing list