CamelCase and Underscores

Is there a document anywhere that indicates when to use camel casing and when to use underscores between words?

Is there a document anywhere that indicates when to use camel casing and when to use underscores between words?

Huh? Do you mean for things like variables, methods, classes, constants? Or something else?

In general...

variable_name method_name ClassName CONSTANTNAME

-philip

variable_name method_name

But why?! Since methods don't need (), how are we supposed to instinctively know what's a method and what isn't when reading someone elses code? (Or our own when we've forgotten what we wrote!)

Matt.

PS. Anyone play spot the Ruby Newbie, score 10 points!

MattB wrote:

variable_name method_name

But why?! Since methods don't need (), how are we supposed to instinctively know what's a method and what isn't when reading someone elses code? (Or our own when we've forgotten what we wrote!)

You shouldn't need to. The similarity is deliberate.

(BTW, I would do CONSTANT_NAME, not CONSTANTNAME.)

You shouldn't need to.

Because... (?)

(Not being facetious).

MattB wrote:

variable_name method_name

But why?! Since methods don't need (), how are we supposed to instinctively know what's a method and what isn't when reading someone elses code? (Or our own when we've forgotten what we wrote!)

Matt.

PS. Anyone play spot the Ruby Newbie, score 10 points!

variable_name = something Object.method_name

If you are inside a class

def instance_method   self.method_name = something   variable_name = method_name end

^^

You shouldn't need to.

Because... (?)

(Not being facetious).

Because for all practical purposes they are the same thing. They aren't of course, but only the class itself should know or care about that.

Look at ActiveRecord... say I've got a Widget class with a title attribute...

W = Widget.new w.title = "Foo" puts w.title

*both* the 2nd and 3rd lines are actually methods. You're not accessing a variable of the instance of the class.

Does it matter to you? No.

In the first case the method is "def title=()" and in the second it's "def title()". Maybe. Rails probably abstracts even that. But that's the general idea.

-philip

Should have mentioned this before, but if you're really curious about this sort of thing, the "Well Grounded Rubyist" is excellent.

(just a happy owner of said book)