在Rails应用程序中使用括号是否合适?

时间:2011-03-04 17:52:52

标签: ruby

我对rails很新,但我真的很喜欢合并TDD,a / b测试,MVC等等,所以我决定在下一个项目中使用rails。我不喜欢rails的一个方面是人们用于函数调用的样式。以下行是我期望在典型的rails用户控制器中看到的:

validates :name, :presence => true

我真的不喜欢这种风格,因为它让像我这样的新手很难理解验证是一个函数,它接受两个参数,第二个参数是一个哈希。对我来说,这种语法更清晰:

validates(:name, {:presence => true})

现在,我希望这个项目能够成长,所以我将会在其他比我更熟练的Rails开发中获益。所以,问题是,如果我以我的风格编写这个应用程序,对于习惯于传统的rails方式的人来说是否会非常令人沮丧,还是我可以继续使用括号和花括号来使结构更明确?

3 个答案:

答案 0 :(得分:3)

他们可能会试图让你离开岛屿......

尝试适应Ruby约定。请参阅这里有价值的主题:

http://railsforum.com/viewtopic.php?id=1042

“如果我只能向您提供一条建议,那就是:遵循Rails惯例”

查看非官方约定(为谷歌部门编写)

http://www.caliban.org/ruby/rubyguide.shtml

答案 1 :(得分:3)

Ruby没有真正的规范风格指南,所以你可以继续这样做。是的,将会有像这样的代码(尤其是红宝石退伍军人)感到沮丧的开发者。

许多Rails代码试图看起来像是自然语言,人们会争辩说“编程”它会破坏这个目的。

但是我认为这是一个小问题 - 只要你编写好的代码 - 优秀的开发者将适应任何风格。

答案 2 :(得分:1)

Ruby不需要括号,除非没有它们会使代码模糊不清。借用Ruby Koans

  # (NOTE: We are Using eval below because the example code is
  # considered to be syntactically invalid).
  def test_sometimes_missing_parentheses_are_ambiguous
    eval "assert_equal 5, my_global_method 2, 3" # ENABLE CHECK
    #
    # Ruby doesn't know if you mean:
    #
    #   assert_equal(5, my_global_method(2), 3)
    # or
    #   assert_equal(5, my_global_method(2, 3))
    #
    # Rewrite the eval string to continue.
    #
  end