我希望编写的代码能被其他人轻松理解。
像hide_email
或email_hidden
这样的布尔属性有惯用的样式吗?
我希望编写的代码能被其他人轻松理解。
像hide_email
或email_hidden
这样的布尔属性有惯用的样式吗?
我这样理解:
是 <attribute_name>
是
,因为Ruby更喜欢以?
后缀表示“is”的方法名(更多信息请参见下文),剩下的就是email_hidden
因此,在您的特定情况下,请将属性命名如下:
email_is_hidden
。is
,剩下的就是email_hidden
?
结尾),并按预期返回true
/false
。 因此,在数据库中,虽然您的属性名为email_hidden
,但出于清晰和遵循Ruby on Rails约定的原因,在代码中应将其引用为email_hidden?
。user.email_hidden?
vs user.email_is_hidden?
。公平地说,只要您在代码库中保持一致,任何一个都应该可以正常工作。 - Joshua Pinter以下是您提供的两个名称示例:
hide_email
可以作为执行所有隐藏电子邮件系统范围内程序的方法的好名称。但它绝不适用于返回电子邮件状态的布尔方法。email_hidden?
带有问号(?)结尾,是表示电子邮件是否已隐藏的布尔方法的正确名称。如果您真正想编写优秀的代码,请始终考虑 Ruby 约定。即使在思考系统中的流程时,也会对您有所帮助。
hide_email
更像是一个动词而不是形容词。也就是说,它听起来像是一个动作,而不是一个属性。 - Joshua Pinteremail_hidden?
。这是 Ruby 社区习惯使用的方式。请注意末尾的?
。email_hidden
或email_hidden?
作为设置器方法。你会想要使用一个动词,比如hide_email
来隐藏它,而email_hidden=
则允许其他人为你设置它。 - Uzbekjon这段 Ruby 代码表明所有布尔方法应该以问号结尾。
在 ActiveRecord 中,你可以看到:
User.valid?
或者在 Ruby 中,你可以找到
[].nil?
[].empty?
http://blogs.visoftinc.com/2010/04/12/ruby-beauty-method-naming-conventions/
。obj.is_a?(Something)
或 hash.has_key?(:foo)
。也就是说,当您引用 self
时使用 is_XXX?
或 has_XXX?
是可以接受的。 - Andrea Pavoni
attr_accessor
的,只需省略?
。 - Andre Figueiredo