首页 > 学院 > 开发设计 > 正文

Ruby编程中的语法使用风格推荐

2019-10-26 19:28:12
字体:
来源:转载
供稿:网友

使用 :: 引用常量(包括类和模块)和构造器 (比如 Array() 或者 Nokogiri::HTML())。
    永远不要使用 :: 来调用方法。

  # bad  SomeClass::some_method  some_object::some_method  # good  SomeClass.some_method  some_object.some_method  SomeModule::SomeClass::SOME_CONST  SomeModule::SomeClass()

    使用括号将def的参数括起来。当方法不接收任何参数的时候忽略括号。

     

# bad   def some_method()    # body omitted   end   # good   def some_method    # body omitted   end   # bad   def some_method_with_arguments arg1, arg2    # body omitted   end   # good   def some_method_with_arguments(arg1, arg2)    # body omitted   end

    从来不要使用 for, 除非你知道使用它的准确原因。大多数时候迭代器都可以用来替for。for 是由一组 each 实现的 (因此你正间接添加了一级),但是有一个小道道 - for并不包含一个新的 scope (不像 each)并且在它的块中定义的变量在外面也是可以访问的。

 

  arr = [1, 2, 3]  # bad  for elem in arr do   puts elem  end  # note that elem is accessible outside of the for loop  elem #=> 3  # good  arr.each { |elem| puts elem }  # elem is not accessible outside each's block  elem #=> NameError: undefined local variable or method `elem'

    在多行的 if/unless 中坚决不要使用 then。

    

# bad  if some_condition then   # body omitted  end  # good  if some_condition   # body omitted  end

    在多行的 if/unless 总是把条件放在与 if/unless 的同一行。

 

  # bad  if   some_condition   do_something   do_something_else  end  # good  if some_condition   do_something   do_something_else  end

    喜欢三元操作运算(?:)超过if/then/else/end结构。
    它更加普遍而且明显的更加简洁。

  # bad  result = if some_condition then something else something_else end  # good  result = some_condition ? something : something_else

    使用一个表达式在三元操作运算的每一个分支下面只使用一个表达式。也就是说三元操作符不要被嵌套。在这样的情形中宁可使用 if/else。

  # bad  some_condition ? (nested_condition ? nested_something : nested_something_else) : something_else  # good  if some_condition   nested_condition ? nested_something : nested_something_else  else   something_else  end

    不要使用 if x: ... - 它在Ruby 1.9中已经移除。使用三元操作运算代替。

  # bad  result = if some_condition then something else something_else end  # good  result = some_condition ? something : something_else            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表