• 的缩进和 case 一致。
      [link]

    • 函数的参数要么全部在同一行,如果参数要分成多行,则每行一个参数, 相同缩进。[link]

      1. # 错误
      2. def self.create_translation(phrase_id, phrase_key, target_locale,
      3. value, user_id, do_xss_check, allow_verification)
      4. ...
      5. end
      6. # 正确
      7. def self.create_translation(phrase_id,
      8. phrase_key,
      9. target_locale,
      10. value,
      11. user_id,
      12. do_xss_check,
      13. allow_verification)
      14. ...
      15. end
      16. # 正确
      17. def self.create_translation(
      18. phrase_id,
      19. phrase_key,
      20. target_locale,
      21. value,
      22. user_id,
      23. do_xss_check,
      24. allow_verification
      25. )
      26. ...
      27. end
    • 多行的布尔表达式,下一行缩进一下。[link]

      1. # 错误
      2. def is_eligible?(user)
      3. program_not_expired
      4. end
      5. # 正确
      6. def is_eligible?(user)
      7. Trebuchet.current.launch?(ProgramEligibilityHelper::PROGRAM_TREBUCHET_FLAG) &&
      8. is_in_program?(user) &&
      9. program_not_expired
      10. end
    • 行末不要留空格。
      [link]

    • 写行内注释的时候,在代码和注释之间放 1 个空格。
      [link]

      1. # 错误
      2. result = func(a, b)# we might want to change b to c
      3. # 正确
      4. result = func(a, b) # we might want to change b to c
      1. sum = 1 + 2
      2. a, b = 1, 2
      3. 1 > 2 ? true : false; puts 'Hi'
      4. [1, 2, 3].each { |e| puts e }
    • 逗号前面永远不要放空格
      [link]

    • block 语法里,| | 内部的两边不应该带多余的空格,参数之间应该有1个空格,| | 后面应该有一个空格
      [link]

      1. # 错误
      2. {}.each { | x, y |puts x }
      3. # 正确
      4. {}.each { |x, y| puts x }
    • 感叹号和参数间不要留空格,下面是个正确的例子。[link]

      1. !something
    • (, [ 后面不要有空格
      ], ) 前面不要有空格
      [link]

      1. some(arg).other
      2. [1, 2, 3].length

    • 字符串插值时候忽略空格。[link]

      1. # 错误
      2. var = "This # {foobar} is interpolated."
    • if 条件保持相同缩进,方便识别哪些是条件,哪些是内容。
      [link]

      1. if .checkin == @reservation.start_date &&
      2. .checkout == (@reservation.start_date + .nights)
      3. redirect_to_alteration @reservation_alteration
      4. end
    • 条件语句,块,case 语句,等等东西后面换一行, 例子如下。[link]

      1. if robot.is_awesome?
      2. send_robot_present
      3. end
      4. robot.add_trait(:human_like_intelligence)
    • 不同缩进的代码之间无需空行 (比如 class 或 module 和内容之间)。
      [link]

      1. # 错误
      2. class Foo
      3. def bar
      4. # body omitted
      5. end
      6. end
      7. # 正确
      8. class Foo
      9. def bar
      10. # body omitted
      11. end
      12. end
    • 方法之间 1 个空行就好。[link]

      1. def a
      2. end
      3. def b
      4. end
    • 1 个空行隔开类似的逻辑。
      [link]