- 浏览: 329900 次
- 性别:
- 来自: 北京
文章分类
最新评论
原则:
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 1609https://db-china.org -
Ruby Verbose Warning Mode
2011-10-16 14:48 2024Ruby在很多方面是一个更优雅的Perl,从Perl社区继承了 ... -
Pattern Match In Ruby
2011-10-07 01:17 1971最近看了一些Erlang,模式匹配是个好东西,简单的sum函数 ... -
Draper: View Models for Rails
2011-10-07 01:19 2232Draper是一个Ruby gem,它让Rails model ... -
Active Record batch processing in parallel processes
2011-10-07 01:20 2232Active Record 提供 find_each来分批处理 ... -
最轻量级的Ruby后台任务
2011-08-04 16:47 3821普通情况下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 2713Identity 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 2025地址: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 1555method_missing是ruby里面一个非常cool的h ... -
Autocompete with Trie
2011-04-09 04:04 1634像微薄里面用户输入一 ... -
用imagemagick和tesseract-ocr破解简单验证码
2011-04-09 01:31 18861工具:imagemagick + tesseract-ocr ... -
OAuth gem for rails,支持豆瓣,新浪微薄,腾讯微博,搜狐微博,网易微博
2011-03-26 03:13 4448地址:https://github.com/hooopo/oa ... -
用jmeter模拟amf请求进行压力测试
2010-12-16 16:56 29821.获取amf二进制包: 在本地建立proxy,端口为888 ... -
Memoization in Ruby
2010-11-14 11:42 1164这里的Memoization就是将ruby的方法或lambda ... -
整理了一下2008-2010的RubyHeroes博客列表
2010-10-07 02:26 2797Bryan Helmkamp(webrat作者)https:/ ...
相关推荐
ruby-style-guide:社区驱动的Ruby编码风格指南
hologram-github-theme, 一个用于全息图的Github Styleguide启发主题 全息图Github主题这是一个非常简单的Github Styleguide 灵感主题,它是用于trulia全息图的主题,它是 ruby 前端doc生成器。预览 视图示例 style...
OmbuLabs :: StyleGuide Ruby on Rails安装(作为宝石) 将此行添加到您的应用程序的Gemfile中: gem 'ombulabs-styleguide' 然后执行: $ bundle 或将其自己安装为: $ gem install ombulabs-styleguide 用法 ...
ruby-style-guide:俄语版:社区驱动的Ruby编码风格指南
rails-style-guide:社区驱动的Ruby on Rails样式指南
总文档索引source中的目录结果- source/html/- source/css/ |_ README.md # 章节导言 |_ codestyle.md |_ common.md |_ more...SUMMRAY.md 的内容* [CSS styleguide](source/css/README.md) * [代码风格
您将要与之交互的两个主要目录是styleguide-theme和styles 。 前一个目录是样式指南的页眉和页脚以及可能需要为其主题化的所有静态资源的位置(是的,您可以通过此目录对样式指南进行样式设置)。 请注意,页眉和...
rspec-style-guide:编写规范的最佳实践!
Sport Ngin Styleguide网站 这是Sport Ngin的风格指南。 您可以在github页面上查看它,为 为样式指南做贡献 Sport Ngin员工可以提出更改请求。 设置项目 该项目将gh-pages分支作为部署的子模块。 这需要设置。 有一...
Written by engineers from 10gen, the company that develops and supports this open source database, MongoDB: The Definitive Guide provides guidance for database developers, advanced configuration for ...
style-guide-guide.hbs 风格指南指南 节点.js 吞咽 咕噜声 集合 服务生 图案实验室 图案底漆 萨斯当 源代码 风格文档 样式原型 样式指南.js SassDoc Ruby 全息图 KSS 图案底漆 生活方式指南 活生生的 PHP ...
RSpec样式指南榜样很重要。 -军官Alex J. Murphy / RoboCop 小费您可以在找到本指南的精美版本,并对其导航进行了改进。 该RSpec样式指南概述了推荐给现实世界程序员的最佳实践,以编写其他现实世界程序员可以维护的...
序幕 您在考虑在代码中看到变量get_UserProfile想法? 我想每个人都记得[这个故事]( )。 起重机可以飞翔,派克游泳和小龙虾可以在地面上行走是可以的,但是当他们团结一致实现共同的... [Ruby中的代码嗅觉列表]( )
Murphy / RoboCop提示您可以在https://rails.rubystyle.guide上找到本指南的精美版本,并对其导航进行了改进。 本指南的目的是为Ruby on Rails 4开发提供一组最佳实践和样式说明。 它是对现有社区驱动的Ruby编码...
Ruby in Style博客 社区Ruby,Minitest,Rails和RSpec指南的同伴博客。 在更新指南之前,主要用于讨论各种(有争议的)想法。 该博客的另一个目的是为各种样式指南中概述的指南提供更多的理由。 欢迎任何人对此...
使用以下命令创建sass / styleguide.lsg (用您的Sass文件的目录名称替换sass/ ): // Replace with your default Sass/SCSS file name: @scss application.css.scss // Set the HTML title of the document: @...
Authoring Examples Living Styleguide Development Tips Contributing Styleguide Here -这里。 Usage Sass and Sprockets适用于任何使用Compass/Sass/SCSS以及Sprockets的专案,例如Ruby on Rails或Middleman。将...