既然我的控制器正在扩展到基本的REST操作之外,那么给定的表达式是内置方法,控制器方法,模型还是变量都会让人感到有些困惑。
当我从其他方法调用它们时,将空括号添加到我的控制器方法会导致任何问题吗?像这样:
if customer.save?
subscription_checker()
end
我至少试图在我创建的方法的名称中总是使用下划线,以使它们看起来与大多数内置方法不同。
答案 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
实际上应该被抽象为一个单独的类而不是控制器中的另一个方法。但正如我所说,为了在这里给出任何具体建议,我需要看到更多源文件。