的缩进和
case
一致。
[link]函数的参数要么全部在同一行,如果参数要分成多行,则每行一个参数, 相同缩进。[link]
# 错误
def self.create_translation(phrase_id, phrase_key, target_locale,
value, user_id, do_xss_check, allow_verification)
...
end
# 正确
def self.create_translation(phrase_id,
phrase_key,
target_locale,
value,
user_id,
do_xss_check,
allow_verification)
...
end
# 正确
def self.create_translation(
phrase_id,
phrase_key,
target_locale,
value,
user_id,
do_xss_check,
allow_verification
)
...
end
多行的布尔表达式,下一行缩进一下。[link]
# 错误
def is_eligible?(user)
program_not_expired
end
# 正确
def is_eligible?(user)
Trebuchet.current.launch?(ProgramEligibilityHelper::PROGRAM_TREBUCHET_FLAG) &&
is_in_program?(user) &&
program_not_expired
end
行末不要留空格。
[link]写行内注释的时候,在代码和注释之间放 1 个空格。
[link]# 错误
result = func(a, b)# we might want to change b to c
# 正确
result = func(a, b) # we might want to change b to c
-
sum = 1 + 2
a, b = 1, 2
1 > 2 ? true : false; puts 'Hi'
[1, 2, 3].each { |e| puts e }
逗号前面永远不要放空格
[link]block 语法里,| | 内部的两边不应该带多余的空格,参数之间应该有1个空格,| | 后面应该有一个空格
[link]# 错误
{}.each { | x, y |puts x }
# 正确
{}.each { |x, y| puts x }
感叹号和参数间不要留空格,下面是个正确的例子。[link]
!something
(
,[
后面不要有空格
]
,)
前面不要有空格
[link]some(arg).other
[1, 2, 3].length
字符串插值时候忽略空格。[link]# 错误
var = "This # {foobar} is interpolated."
if 条件保持相同缩进,方便识别哪些是条件,哪些是内容。
[link]if .checkin == @reservation.start_date &&
.checkout == (@reservation.start_date + .nights)
redirect_to_alteration @reservation_alteration
end
条件语句,块,case 语句,等等东西后面换一行, 例子如下。[link]
if robot.is_awesome?
send_robot_present
end
robot.add_trait(:human_like_intelligence)
不同缩进的代码之间无需空行 (比如 class 或 module 和内容之间)。
[link]# 错误
class Foo
def bar
# body omitted
end
end
# 正确
class Foo
def bar
# body omitted
end
end
方法之间 1 个空行就好。[link]
def a
end
def b
end
1 个空行隔开类似的逻辑。
[link]