- 浏览: 335273 次
- 性别:
- 来自: 北京
文章分类
最新评论
原则:
1.方法名
全部小写,并且用下划线分开
DO THIS:
NOT THIS:
DO THIS:
NOT THIS:
此处省略若干字...
2.条件控制
Fine:
Better:
很长的表达式:
Better:
if语句后置
Better:
Better:
不推荐:
until,while,当然unless里面有else也不推荐
3.习惯用法(推荐)
||= as in, @user ||= User.find(params[:id])
&&= as in, @user.name &&= @user.name.downcase
x.nil? rather than x == nil
x.empty? rather than x.size == 0 — in Rails x.blank? is preferred.
4.链式调用
ruby很容易写出这样长的链式调用,太长了还是分开写好...
当然写个脚本到无所谓。
5.And and or or && and ||(99%的时候||&&是你想要的)
大多数时候我们想要的是上面的形式..
5.begin rescure end语句
Better:
Ps;在方法中可以省去前面的begin和后面的end,这样显得clean多了。
6.默认参数
等号前后有空格。
7.每行80字符,缩进2字符
当然这个如果用hash做参数会写的更漂亮。
8.摆脱括号
个人觉得括号没什么不好,反倒是有时候省略括号总会出现warning,很烦,干脆全用括号了。
前面2/3我就不作评论了,不过最后1/3,你的面杀伤也太大了吧。
找到了......这个可能算是完美主义者的癖好..
嗯我也是习惯手动对齐的,很自然的就打了一堆空格 OTL
手动对齐是一种很不人道的事情......
尤其是在修改代码时 如果需要加入一个名字很长的变量 那原先的语句也需要重新对其
自动对齐的插件很多 还是找一个吧.
netbeans有这个功能么?radrail也行
看过有人这样写的:
00后的IDE都可以支持看到哪个end对应哪个if
话说
if ()
{
} /* end if ....*/
if
end #end of if
估计是C科班出身的。likes me。
而且习惯用sourceinsight
嗯,说得没错。确实是在稍微改动之后都要重新对齐。所以之前读一个关于Standard ML的style guide里面就反对等号对齐的做法。
不过我那些对齐也是review的时候才往里加的就是了,最初写代码的时候不会打那么多空格的
找到了......这个可能算是完美主义者的癖好..
嗯我也是习惯手动对齐的,很自然的就打了一堆空格 OTL
手动对齐是一种很不人道的事情......
尤其是在修改代码时 如果需要加入一个名字很长的变量 那原先的语句也需要重新对其
自动对齐的插件很多 还是找一个吧.
找到了......这个可能算是完美主义者的癖好..
嗯我也是习惯手动对齐的,很自然的就打了一堆空格 OTL
会写RDoc就更完美了。
找到了......这个可能算是完美主义者的癖好..
某lib:
PS:貌似也是手动的........后面那两个显然没对齐,哇咔咔
看过有人这样写的:
1和4最近一直在用。
5是编辑器支持的吗,不过觉得如果语句长度相差很大这种对齐效果也不是很好。
6我就遇到过在A编辑器上格式良好,在B编辑器格式变乱的情况。原来可以把tab展成空格啊........
引用
Make it Work, Make it Clean, Make it Fast (if necessary)
1.方法名
全部小写,并且用下划线分开
DO THIS:
def calculate_person_data_usage_history_start_date() end
NOT THIS:
Date calculatePersonDataUsageHistoryStartDate() {}
DO THIS:
def active? end def attribute=(name) end class T attr_reader :attribute attr_accessor :attr end
NOT THIS:
def is_active end def set_attribute end def get_attribute end
此处省略若干字...
2.条件控制
Fine:
x = active? ? 3 : 5
Better:
x = if active? then 3 else 5 end
很长的表达式:
x = if a_really_long_boolean_function then a_long_true_value else a_long_false_value end
x = if a_really_long_boolean_function a_long_true_value else a_long_false_value end
Better:
def assign_x if a_really_long_boolean_function a_long_true_value else a_long_false_value end end x = assign_x
if语句后置
Better:
return if x.nil?
Better:
unless logged_in? do_something_for_unlogged_in_requests end
不推荐:
until,while,当然unless里面有else也不推荐
3.习惯用法(推荐)
||= as in, @user ||= User.find(params[:id])
&&= as in, @user.name &&= @user.name.downcase
x.nil? rather than x == nil
x.empty? rather than x.size == 0 — in Rails x.blank? is preferred.
4.链式调用
all_users.select(&:is_active).map(&:name).sort
ruby很容易写出这样长的链式调用,太长了还是分开写好...
当然写个脚本到无所谓。
5.And and or or && and ||(99%的时候||&&是你想要的)
x = y || z x = (y || z)
x = y or z (x = y) or z
大多数时候我们想要的是上面的形式..
5.begin rescure end语句
Better:
def sample_method do_something rescue raise Exception end
Ps;在方法中可以省去前面的begin和后面的end,这样显得clean多了。
6.默认参数
def(x, a = 3, b = nil)
等号前后有空格。
7.每行80字符,缩进2字符
a_very_long_method_name(argument1, a + b, arg_3)
当然这个如果用hash做参数会写的更漂亮。
8.摆脱括号
个人觉得括号没什么不好,反倒是有时候省略括号总会出现warning,很烦,干脆全用括号了。
评论
17 楼
jetthink
2009-09-04
下划线的命名规则明显更加符合人的阅读习惯,用了一段时间后,明显感觉能提高效率。
其他多数语言都是pascal和camel规则,看起来太累。
不得不赞一下ruby是code for fun
其他多数语言都是pascal和camel规则,看起来太累。
不得不赞一下ruby是code for fun
16 楼
Xorcerer
2009-08-13
King.Arthur 写道
丑陋的日本人,丑陋的Ruby代码,丑陋的Ruby代码的end尾巴!
前面2/3我就不作评论了,不过最后1/3,你的面杀伤也太大了吧。
15 楼
King.Arthur
2009-07-28
丑陋的日本人,丑陋的Ruby代码,丑陋的Ruby代码的end尾巴!
14 楼
check
2009-07-28
关于end,linus torvalds曾经说过:
If you need more than 3 levels of indentation, you're screwed anyway, and should fix your program.
* Linux 1.3.53 CodingStyle documentation. Retrieved on 2006-08-28.
我个人认为90%的情况下end多了是个逻辑思维的问题,而不是排版问题。剩下的确实不好改变的情况,花点时间看看也不是大问题。Python也是,缩进多了不好看,但是合适的代码本来就不应该有那么多缩进
If you need more than 3 levels of indentation, you're screwed anyway, and should fix your program.
* Linux 1.3.53 CodingStyle documentation. Retrieved on 2006-08-28.
我个人认为90%的情况下end多了是个逻辑思维的问题,而不是排版问题。剩下的确实不好改变的情况,花点时间看看也不是大问题。Python也是,缩进多了不好看,但是合适的代码本来就不应该有那么多缩进
13 楼
jinleileiking
2009-07-27
icefishc 写道
RednaxelaFX 写道
Hooopo 写道
night_stalker 写道
5 应该有支持的,不过至今都在手动对齐 ……
长度相差太大就算了,相差小的对齐一下(可能是强迫症 ……)
长度相差太大就算了,相差小的对齐一下(可能是强迫症 ……)
找到了......这个可能算是完美主义者的癖好..
嗯我也是习惯手动对齐的,很自然的就打了一堆空格 OTL
def initialize @user = AppConfig.user @password = AppConfig.password @log = Logger.new AppConfig.log_file || STDOUT @log.level = AppConfig.log_level || Logger::INFO yield self if block_given? end
手动对齐是一种很不人道的事情......
尤其是在修改代码时 如果需要加入一个名字很长的变量 那原先的语句也需要重新对其
@user = AppConfig.user @password = AppConfig.password @log = Logger.new AppConfig.log_file || STDOUT @balablabala = ...... # :s
自动对齐的插件很多 还是找一个吧.
netbeans有这个功能么?radrail也行
12 楼
jinleileiking
2009-07-27
Hooopo 写道
引用
8.看见这堆 end 会很郁闷,分不清哪个是 end 哪个的:
Ruby代码
end
end
end
end
end
Ruby代码
end
end
end
end
end
看过有人这样写的:
end#end of ... end#end of ... end#end of each end#end of method end#end of class
00后的IDE都可以支持看到哪个end对应哪个if
话说
if ()
{
} /* end if ....*/
if
end #end of if
估计是C科班出身的。likes me。
而且习惯用sourceinsight
11 楼
jinleileiking
2009-07-27
calculate_person_data_usage_history_start_date()
cal_person_data_usage_hist_start_date()
cal_person_data_usage_hist_start_date()
10 楼
RednaxelaFX
2009-07-24
icefishc 写道
手动对齐是一种很不人道的事情......
尤其是在修改代码时 如果需要加入一个名字很长的变量 那原先的语句也需要重新对其
自动对齐的插件很多 还是找一个吧.
尤其是在修改代码时 如果需要加入一个名字很长的变量 那原先的语句也需要重新对其
@user = AppConfig.user @password = AppConfig.password @log = Logger.new AppConfig.log_file || STDOUT @balablabala = ...... # :s
自动对齐的插件很多 还是找一个吧.
嗯,说得没错。确实是在稍微改动之后都要重新对齐。所以之前读一个关于Standard ML的style guide里面就反对等号对齐的做法。
不过我那些对齐也是review的时候才往里加的就是了,最初写代码的时候不会打那么多空格的
9 楼
icefishc
2009-07-24
RednaxelaFX 写道
Hooopo 写道
night_stalker 写道
5 应该有支持的,不过至今都在手动对齐 ……
长度相差太大就算了,相差小的对齐一下(可能是强迫症 ……)
长度相差太大就算了,相差小的对齐一下(可能是强迫症 ……)
找到了......这个可能算是完美主义者的癖好..
嗯我也是习惯手动对齐的,很自然的就打了一堆空格 OTL
def initialize @user = AppConfig.user @password = AppConfig.password @log = Logger.new AppConfig.log_file || STDOUT @log.level = AppConfig.log_level || Logger::INFO yield self if block_given? end
手动对齐是一种很不人道的事情......
尤其是在修改代码时 如果需要加入一个名字很长的变量 那原先的语句也需要重新对其
@user = AppConfig.user @password = AppConfig.password @log = Logger.new AppConfig.log_file || STDOUT @balablabala = ...... # :s
自动对齐的插件很多 还是找一个吧.
8 楼
RednaxelaFX
2009-07-24
Hooopo 写道
night_stalker 写道
5 应该有支持的,不过至今都在手动对齐 ……
长度相差太大就算了,相差小的对齐一下(可能是强迫症 ……)
长度相差太大就算了,相差小的对齐一下(可能是强迫症 ……)
找到了......这个可能算是完美主义者的癖好..
嗯我也是习惯手动对齐的,很自然的就打了一堆空格 OTL
def initialize @user = AppConfig.user @password = AppConfig.password @log = Logger.new AppConfig.log_file || STDOUT @log.level = AppConfig.log_level || Logger::INFO yield self if block_given? end
7 楼
Hooopo
2009-07-24
引用
9.空间可以提升阅读的舒适感,适当的时候得多空一几行,多空一几格。
会写RDoc就更完美了。
class CGI # :stopdoc: # String for carriage return CR = "\015" # String for linefeed LF = "\012" # Standard internet newline sequence EOL = CR + LF REVISION = '$Id: cgi.rb 12340 2007-05-22 21:58:09Z shyouhei $' #:nodoc: NEEDS_BINMODE = true if /WIN/ni.match(RUBY_PLATFORM) # Path separators in different environments. PATH_SEPARATOR = {'UNIX'=>'/', 'WINDOWS'=>'\\', 'MACINTOSH'=>':'} # HTTP status codes.
6 楼
Hooopo
2009-07-24
night_stalker 写道
5 应该有支持的,不过至今都在手动对齐 ……
长度相差太大就算了,相差小的对齐一下(可能是强迫症 ……)
长度相差太大就算了,相差小的对齐一下(可能是强迫症 ……)
找到了......这个可能算是完美主义者的癖好..
某lib:
if name.kind_of?(Hash) values = name["VALUES"] size = name["SIZE"].to_s if name["SIZE"] multiple = name["MULTIPLE"] name = name["NAME"] else size = nil multiple = nil end
PS:貌似也是手动的........后面那两个显然没对齐,哇咔咔
5 楼
Hooopo
2009-07-24
引用
8.看见这堆 end 会很郁闷,分不清哪个是 end 哪个的:
Ruby代码
end
end
end
end
end
Ruby代码
end
end
end
end
end
看过有人这样写的:
end#end of ... end#end of ... end#end of each end#end of method end#end of class
4 楼
night_stalker
2009-07-24
5 应该有支持的,不过至今都在手动对齐 ……
长度相差太大就算了,相差小的对齐一下(可能是强迫症 ……)
长度相差太大就算了,相差小的对齐一下(可能是强迫症 ……)
3 楼
Hooopo
2009-07-24
night_stalker 写道
个人推荐风格:
1和4最近一直在用。
@mail.author.link.icon.should ==\ "http://t.douban.com/icon/u1057620-20.jpg"
@table[:link] ||= OpenStruct.new @table[:link]. __send__("#{link.attributes['rel']}=", link.attributes['href'])
5是编辑器支持的吗,不过觉得如果语句长度相差很大这种对齐效果也不是很好。
6我就遇到过在A编辑器上格式良好,在B编辑器格式变乱的情况。原来可以把tab展成空格啊........
2 楼
night_stalker
2009-07-24
个人推荐风格:
1.子句太长了可以用 \ 换行,换行后缩进 2 格
2.推荐使用 unless 而不是 if not 或者 if !,这样可以省去很多括号 ……
3. ? : 如果太长,可以这样排版(本人已经很少写 if else end 了 ……)
4.我喜欢这样把链调用分行 ……
5.多行相似语句的关键符号尽量对齐!美观很重要!如下面的 =>
6.设置编辑器把所有 tab 都展成空格,这样在其它编辑器里都有一致的观感。
7.可以这么理解: and or 是连词, && 和 || 是逻辑运算符
8.看见这堆 end 会很郁闷,分不清哪个是 end 哪个的:
所以嵌套不要太深,深了分离出子 routine 或者想个法子减少连续的 end 系列。减少嵌套的一个方法:
改成
ps:_why 的 potion 用 . 代替 end,写起来比较搞笑
9.空间可以提升阅读的舒适感,适当的时候得多空一几行,多空一几格。
10.宽 80 字符是上个世纪的限制了 …… 某些时候超出 80 字符是没办法的事情,勉强换行会变丑的 ……
11.命名的经验:
多次出现的标识符以言简意赅为上(定义处补个详细说明的注释),
出现得少的或者生存期很长的以详尽清楚为上。
诗体的崇拜者奉上 …… [ 1.9 就不警告括号的事了 ] …… 有空研究下怎么关掉警告。
1.子句太长了可以用 \ 换行,换行后缩进 2 格
kill you \ until you.are dead
2.推荐使用 unless 而不是 if not 或者 if !,这样可以省去很多括号 ……
3. ? : 如果太长,可以这样排版(本人已经很少写 if else end 了 ……)
test ? true_clause : false_clause ;
4.我喜欢这样把链调用分行 ……
one. two. three. four rescue nil
5.多行相似语句的关键符号尽量对齐!美观很重要!如下面的 =>
/ie8/ => 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)', /win.*ff/ => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1) Gecko/20090624 Firefox/3.5', /win.*moz.*/ => 'Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.4b) Gecko/20030516 Mozilla Firebird/0.6',
6.设置编辑器把所有 tab 都展成空格,这样在其它编辑器里都有一致的观感。
7.可以这么理解: and or 是连词, && 和 || 是逻辑运算符
sit down and watch tv if true || false
sit down && watch tv # => 语法错误!
8.看见这堆 end 会很郁闷,分不清哪个是 end 哪个的:
end end end end end
所以嵌套不要太深,深了分离出子 routine 或者想个法子减少连续的 end 系列。减少嵌套的一个方法:
def m1 if xxx ... end end
改成
def m1 return if xxx ... end
ps:_why 的 potion 用 . 代替 end,写起来比较搞笑
.....
9.空间可以提升阅读的舒适感,适当的时候得多空一几行,多空一几格。
10.宽 80 字符是上个世纪的限制了 …… 某些时候超出 80 字符是没办法的事情,勉强换行会变丑的 ……
11.命名的经验:
多次出现的标识符以言简意赅为上(定义处补个详细说明的注释),
出现得少的或者生存期很长的以详尽清楚为上。
诗体的崇拜者奉上 …… [ 1.9 就不警告括号的事了 ] …… 有空研究下怎么关掉警告。
1 楼
deng131
2009-07-24
很好的推荐写法。
发表评论
-
新博客
2012-04-23 20:47 1734https://db-china.org -
Ruby Verbose Warning Mode
2011-10-16 14:48 2051Ruby在很多方面是一个更优雅的Perl,从Perl社区继承了 ... -
Pattern Match In Ruby
2011-10-07 01:17 2006最近看了一些Erlang,模式匹配是个好东西,简单的sum函数 ... -
Draper: View Models for Rails
2011-10-07 01:19 2268Draper是一个Ruby gem,它让Rails model ... -
Active Record batch processing in parallel processes
2011-10-07 01:20 2270Active Record 提供 find_each来分批处理 ... -
最轻量级的Ruby后台任务
2011-08-04 16:47 3860普通情况下ruby调用系统命令行的过程是堵塞的,无论是用sys ... -
test
2011-07-15 19:59 0test -
fiber
2011-06-17 09:37 0挖坑,待填。。 1.用到fiber.alive?、fiber ... -
Identity Map in Rails3.1
2011-06-12 18:29 2737Identity Map是Rails3.1的又 ... -
xx00
2011-06-06 03:40 0https://github.com/ngmoco/cache ... -
挖坑1
2011-06-06 02:17 0cache money 源码 替换memcache为redis ... -
websocket demo
2011-06-04 20:44 2054地址:https://github.com/hooopo/we ... -
ruby GC
2011-06-02 04:24 0http://blog.csdn.net/lijun84/a ... -
reduce method missing call stack with dynamic define method
2011-04-22 22:54 1592method_missing是ruby里面一个非常cool的h ... -
Autocompete with Trie
2011-04-09 04:04 1674像微薄里面用户输入一 ... -
用imagemagick和tesseract-ocr破解简单验证码
2011-04-09 01:31 18926工具:imagemagick + tesseract-ocr ... -
OAuth gem for rails,支持豆瓣,新浪微薄,腾讯微博,搜狐微博,网易微博
2011-03-26 03:13 4480地址:https://github.com/hooopo/oa ... -
用jmeter模拟amf请求进行压力测试
2010-12-16 16:56 30231.获取amf二进制包: 在本地建立proxy,端口为888 ... -
Memoization in Ruby
2010-11-14 11:42 1210这里的Memoization就是将ruby的方法或lambda ... -
整理了一下2008-2010的RubyHeroes博客列表
2010-10-07 02:26 2827Bryan Helmkamp(webrat作者)https:/ ...
相关推荐
Ruby_Style_Guide_ruby.zip Ruby_Style_Guide_ruby.zip Ruby_Style_Guide_ruby.zip Ruby_Style_Guide_ruby.zip Ruby_Style_Guide_ruby.zip Ruby_Style_Guide_ruby.zip Ruby_Style_Guide_ruby.zip Ruby_Style_Guide_...
- **风格指南**:遵循社区公认的代码风格指南,如《The Ruby Style Guide》。 - **测试驱动开发(TDD)**:编写测试用例,确保代码质量和稳定性。 - **持续集成(CI)**:自动化构建和测试流程,提高团队协作效率。 ###...
《Ruby编码风格指南》是社区驱动的一份重要资源,它为Ruby程序员提供了统一的编码规范和最佳实践。这份指南旨在提升代码的可读性、可维护性和团队协作效率。Ruby是一种灵活而富有表达力的编程语言,但也因此可能导致...
Ruby社区有许多流行的代码风格指南,如《Ruby Style Guide》和《Rails Style Guide》。这些指南提供了关于命名约定、缩进、空格、注释、代码结构等方面的指导。例如,它们可能会建议使用两个空格进行缩进,避免长行...
- 遵循Ruby社区广泛接受的编码规范,如Ruby Style Guide,有助于写出更易读、易维护的代码。 9. **闭包和上下文**: - 理解闭包(块、Proc、Lambda)如何捕获并保持其定义时的上下文,特别是对变量的引用,是避免...
Ruby社区有一套广泛接受的编码风格指南,即《Ruby Style Guide》。其中的一些关键点包括: 1. 使用两空格进行缩进,而不是制表符。 2. 方法定义和参数之间使用两个空格。 3. 避免行尾的分号,除非需要在一行内定义...
GitCop可以检查提交的代码是否遵循如Ruby Style Guide这样的社区标准,确保代码的可读性和一致性。 3. **原子性**:GitCop还可以确保每次提交都是原子性的,即每次提交只包含一个逻辑上的更改,这样有助于避免因为...
10. **代码组织**:Ruby中的文件组织、命名约定以及如何编写可读性高的代码,包括代码风格指南(如Ruby Style Guide)的推荐。 通过深入学习和实践文档中的内容,你将能掌握Ruby的核心概念,并具备编写高效、可维护...
最后,为了帮助读者更好地理解Ruby社区和生态系统,书中可能包含了一些开源文化、代码风格指南(如Ruby Style Guide)以及最佳实践的介绍,鼓励读者积极参与到开源项目中,提升自身的编程水平。 总而言之,《Apress...
2. **代码风格检查**:通过遵循特定的编码规范(如Ruby Style Guide),Barkeep可以帮助团队保持一致的代码风格,提高代码可读性和可维护性。 3. **复杂性度量**:Barkeep可以计算函数或方法的Cyclomatic复杂度,这...
- 遵守社区共识的Ruby Style Guide,保证代码风格一致。 - 使用Rubocop等静态代码分析工具检查代码风格和潜在问题。 10. **性能优化** - 学习并理解Ruby的内存管理和垃圾回收机制,避免不必要的对象创建。 - ...
Ruby Style Guide包含了多个方面的编码规范,例如: 1. **命名约定**:变量、方法、类和模块的命名应清晰易懂,遵循snake_case或camelCase,取决于其类型。常量使用ALL_CAPS。避免使用单字母变量名,除非在循环中。...
4. **遵循代码风格**:在Ruby项目中,应遵循社区普遍接受的代码风格,如Ruby Style Guide。确保你的代码与现有代码风格一致,减少不必要的样式讨论。 5. **测试覆盖**:添加或更新测试以确保更改不会引入新的错误。...
Ruby社区有著名的"Ruby Style Guide",它建议使用两空格缩进,使用snake_case命名变量和方法,以及保持代码的DRY(Don't Repeat Yourself)原则。此外,还强调了代码的简洁性和表达性。 9. **Swift编程规范** ...
hologram-github-theme, 一个用于全息图的Github Styleguide启发主题 全息图Github主题这是一个非常简单的Github Styleguide 灵感主题,它是用于trulia全息图的主题,它是 ruby 前端doc生成器。预览 视图示例 style...
10. **代码风格和最佳实践**:遵循Ruby的编码规范(如Ruby Style Guide)和最佳实践能帮助写出更清晰、更易于维护的代码。 通过参与Ruby Jogging,你将有机会系统地学习和巩固这些知识点,并通过实际操作提升编程...
OmbuLabs :: StyleGuide Ruby on Rails安装(作为宝石) 将此行添加到您的应用程序的Gemfile中: gem 'ombulabs-styleguide' 然后执行: $ bundle 或将其自己安装为: $ gem install ombulabs-styleguide 用法 ...
9. **代码质量和风格**:Ruby有其自己的编码风格指南,如Ruby Style Guide,实践中可能包含如何遵循这些指南以提高代码可读性和一致性。 10. **社区资源**:Ruby拥有活跃的社区,如Stack Overflow、Ruby Weekly、...
标签中的“ruby styleguide”指的是Ruby编码规范,它是指导开发者编写一致、可读性强的Ruby代码的一系列规则和最佳实践。遵循风格指南有助于团队协作,提高代码质量。 “gems hacktoberfest”可能意味着这个项目...