0

我正在 RoR 中构建一个新应用程序,并且过去使用过传统的属性命名约定。然而,以可读性的名义,我开始考虑使用更具描述性的对象属性。例如,代替if user.special_needs == true ...,我可以将属性命名为“has_special_needs”,然后可以读取if user.has_special_needs ...

虽然这使我的代码更易于阅读,但它看起来与方法调用非常相似,这让我认为它可能会令人困惑和/或我可能会跳过命名约定行。经过大量研究,我没有找到任何一种选择的可靠论据。由于这也涉及数据库命名约定(我对此知之甚少),我希望得到一些建议。

谢谢

4

1 回答 1

2

If you need to wrap up things, it's very acceptable to create this kind of methods:

class MyModel < ActiveRecord::Base
  ...
  def has_special_needs
    self.special_needs == true
  end
end

You can also use question marks (?) and bangs (!) to make code more readeable:

def has_special_needs?
  self.special_needs == true
end

But in this particular example user.special_needs is true or false right? So you can just use an alias:

class MyModel < ActiveRecord::Base
  alias_attribute :has_special_needs?, :special_needs
  ...
end

# Then:
if @mymodel.has_special_needs?
  ...
end
于 2013-08-01T01:13:34.410 回答