-
-
Save joefiorini/1049083 to your computer and use it in GitHub Desktop.
class Blah | |
private | |
def method1 | |
end | |
def method2 | |
end | |
end | |
# vs. | |
class Blah | |
private | |
def method1 | |
end | |
def method2 | |
end | |
end | |
# vs. | |
class Blah | |
def public_method | |
end | |
private | |
def method1 | |
end | |
def method2 | |
end | |
end |
#3
#4
I just wanted to follow up that my vote for #2 is due to my editor being customized the scope selector and color for public/protected/private in a very distinct way. The comments that people put around these using the #2 or #3 variant are nothing more than a patch around most themes not doing this already (see attached image) http://twitpic.com/5i3gyn.
TL;DR, this whole problem could be traced back to poor editor themes.
#1, definitely.
@joefiorini That is possible, but is hard to agree with absolute certainty. I know that I personally would rather see a class with a few key public interfaces that manage a series of very complex operations in many distinct chunks of work aptly named in many private methods vs one long procedural private method.
@metaskills it would be nice to see that for a number or editors. which editor do you use?
@joefiroini if you think private methods are bad I fear "you are doing it wrong". now you could just leave everything public and document the public API, but in either case many small methods are the proper approach. read http://thinking-forth.sourceforge.net/
@hakanensari which one is #4 ?
@trans I use TextMate, but I had to make a custom scope selector and color for those. I did that 6 years ago when I started to learn ruby. No editor or highlighter does it by default, that I know of.
Used to be a #3, but recently switched to #1 to match the coding style at work.
#3
#1
#2 with comment eg.
private #################################### private
@korin That's an interesting one. It reminds me that I had tried this a few times:
;; private ;;
#1 is the Rails convention (I think)
#2 makes the most sense
#3 is probably the most readable
I vote #3
#3
#3
I use #2... It's not really too hard with syntax highlighting to pick out private methods.
#2 for me.
It's a pity it's not a block to show it's applicability in a text editor with fold indicators (as demostrated by @metaskills)
Coming from the world of M$, I would prefer @trans initial musings... but would be just as happy with a block. Wishful thinking...
I go with #2, but stay consistent with pre-existing codebases. I've also made use of private :method_name
(which @brianvh pointed out). I can't be sure, but I think I got that from something Dave Thomas once said, maybe in the PragProg Metaprogramming screencasts.
#2 makes the most sense since it is just a method invocation, while #3 is slightly less readable, and #1 I have never liked.
I use #3 although I #2 is certaintly more accurate since "public/protected/private" are not special keywords but normal method calls. #1 makes me feel sick, indentation levels are too precious a thing to waste them like that.
class Classy
def initialize
end
private
begin
def private_method_1
end
def private_method_2
end
end
end
Someone wrote private do
which wouldn't work, but got me thinking about the above example.
#2
#1 - according to Rails convention. Vim support this with vim-ruby and in vimrc: let g:ruby_indent_access_modifier_style="indent"
Who does #2 work for? https://www.youtube.com/watch?v=nmJKY59NX8o
Indenting private section is good for huge classes where you can find some private method, trying to use it, and then realise that it is actually private. So I use #2 for small classes and #1 for huge classes with a lot of private methods.
#3 way seems very strange and meaningless.
I've always used 1 but at my current job they use 2 so I've switched to that for the sake of consistency. I don't feel strongly but prefer 1.
However, I really dislike 3 as it visually interrupts the scope of the class.
i'm using #1 most of the time, but just because it's something like a rails-default. actually think that #2 and #3 are making way more sense.