Question about coding style in Rails 3 source

185 views
Skip to first unread message

Jeff

unread,
Jan 12, 2010, 12:46:03 AM1/12/10
to Ruby on Rails: Core
Hi,

I've noticed that some of the commits to rails edge lately are using a
style where instance variables of a class start with a leading
underscore.

Like in this commit: http://github.com/rails/rails/commit/8cb594a2e1808cd7d93f3593afed0414016fc56f

I see this variable:

@_env

I'm guessing it's to avoid naming conflicts when the module is
included in a class? I don't recall seeing this style in other Ruby
libraries (it harkens back to my C++ days), so I'm just wondering if
there's a particular purpose behind it; and whether people who look to
contribute code should be adopting this style, and in what situations.

Thanks,
Jeff

Yehuda Katz

unread,
Jan 12, 2010, 1:12:46 AM1/12/10
to rubyonra...@googlegroups.com
We use @_ivars in cases where an instance variable is to be used internally in a module that will be mixed into a user's class or a class that will be inherited by a user's class.

For instance, we use @_ivars in ActionController::Base and modules mixed into ActionController::Base.

Yehuda Katz
Developer | Engine Yard
(ph) 718.877.1325


--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Core" group.
To post to this group, send email to rubyonra...@googlegroups.com.
To unsubscribe from this group, send email to rubyonrails-co...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/rubyonrails-core?hl=en.




Jeff

unread,
Jan 12, 2010, 1:33:36 AM1/12/10
to Ruby on Rails: Core
On Jan 12, 12:12 am, Yehuda Katz <wyc...@gmail.com> wrote:
> We use @_ivars in cases where an instance variable is to be used internally
> in a module that will be mixed into a user's class or a class that will be
> inherited by a user's class.
>
> For instance, we use @_ivars in ActionController::Base and modules mixed
> into ActionController::Base.

Thanks for the explanation, Yehuda. Sounds logical.

Jeff

> Yehuda Katz
> Developer | Engine Yard
> (ph) 718.877.1325
>
>
>
> On Mon, Jan 11, 2010 at 9:46 PM, Jeff <cohen.j...@gmail.com> wrote:
> > Hi,
>
> > I've noticed that some of the commits to rails edge lately are using a
> > style where instance variables of a class start with a leading
> > underscore.
>
> > Like in this commit:

> >http://github.com/rails/rails/commit/8cb594a2e1808cd7d93f3593afed0414...


>
> > I see this variable:
>
> > @_env
>
> > I'm guessing it's to avoid naming conflicts when the module is
> > included in a class?  I don't recall seeing this style in other Ruby
> > libraries (it harkens back to my C++ days), so I'm just wondering if
> > there's a particular purpose behind it; and whether people who look to
> > contribute code should be adopting this style, and in what situations.
>
> > Thanks,
> > Jeff
>
> > --
> > You received this message because you are subscribed to the Google Groups
> > "Ruby on Rails: Core" group.
> > To post to this group, send email to rubyonra...@googlegroups.com.
> > To unsubscribe from this group, send email to

> > rubyonrails-co...@googlegroups.com<rubyonrails-core%2Bunsubscrib e...@googlegroups.com>

Anuj Dutta

unread,
Jan 12, 2010, 7:53:19 AM1/12/10
to rubyonra...@googlegroups.com


2010/1/12 Jeff <cohen...@gmail.com>

On Jan 12, 12:12 am, Yehuda Katz <wyc...@gmail.com> wrote:
> We use @_ivars in cases where an instance variable is to be used internally
> in a module that will be mixed into a user's class or a class that will be
> inherited by a user's class.
>
> For instance, we use @_ivars in ActionController::Base and modules mixed
> into ActionController::Base.

Thanks for the explanation, Yehuda.  Sounds logical.

Jeff


FYI, other projects like Rack, Clearance also use the same coding style. It is good to see community following one set of guidelines. It just lowers the barrier to entry for a new developer from a different community and keeps the open source code kind of organised.

Anuj

 
To unsubscribe from this group, send email to rubyonrails-co...@googlegroups.com.

For more options, visit this group at http://groups.google.com/group/rubyonrails-core?hl=en.






--
Anuj DUTTA

Joshua Peek

unread,
Jan 12, 2010, 11:17:34 AM1/12/10
to rubyonra...@googlegroups.com
On Mon, Jan 11, 2010 at 11:46 PM, Jeff <cohen...@gmail.com> wrote:
> Hi,
>
> I've noticed that some of the commits to rails edge lately are using a
> style where instance variables of a class start with a leading
> underscore.
>
> Like in this commit: http://github.com/rails/rails/commit/8cb594a2e1808cd7d93f3593afed0414016fc56f
>
> I see this variable:
>
> @_env

This specific example shouldn't be using the "private ivar" naming
style since the Rails module is not an inheritable class.

--
Joshua Peek

Reply all
Reply to author
Forward
0 new messages