原则:
引用
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,很烦,干脆全用括号了。