On 25 Nov 2008, at 16:48, Pat Maddox wrote:
"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.
Surely, as soon as they scroll off the screen, it's time to factor
that code off into a module or class of its own though?
It seems to me like whenever you have a lot of class methods on a
class, you've got a new class dying to get out. It's like class <<
self is like a little incubator for that new type!
Or Is that just me?
_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users