Rails正确的方法来区分方法和变量名称?

时间:2017-04-28 12:16:56

标签: ruby-on-rails ruby syntax

既然我的控制器正在扩展到基本的REST操作之外,那么给定的表达式是内置方法,控制器方法,模型还是变量都会让人感到有些困惑。

当我从其他方法调用它们时,将空括号添加到我的控制器方法会导致任何问题吗?像这样:

if customer.save?
  subscription_checker()
end

我至少试图在我创建的方法的名称中总是使用下划线,以使它们看起来与大多数内置方法不同。

1 个答案:

答案 0 :(得分:4)

  

当我从其他方法调用它们时,将空括号添加到我的控制器方法会导致任何问题吗?

这是区分ruby中变量与方法的有效方法,但“你做错了”™

ruby​​范例的一部分是,您通常不应该关注您引用的东西是变量还是方法。这使代码更容易阅读和重构;保持开发人员的注意力集中在代码的意图而不是其实现上。

这种设计模式通常被称为“裸言”,我强烈推荐以下关于该主题的RubyTapas剧集:http://www.virtuouscode.com/2012/10/01/barewords/

我还建议您快速阅读红宝石风格指南,了解社区认为哪些常见约定为“好”或“坏”。 (社区的Ruby代码样式为extremely well conformed to!)例如,来自this guide

  

仅省略

的括号      
      
  • 不带参数的方法调用:

    # bad
    Kernel.exit!()
    2.even?()
    fork()
    'test'.upcase()
    
    # good
    Kernel.exit!
    2.even?
    fork
    'test'.upcase
    
  •   

在上面的特定代码中,虽然在不了解更多上下文的情况下很难确定,但我怀疑subscription_checker实际上应该被抽象为一个单独的类而不是控制器中的另一个方法。但正如我所说,为了在这里给出任何具体建议,我需要看到更多源文件。