我想编写其他人也很容易理解的代码。
诸如
hide_email
或email_hidden
之类的布尔属性是否具有约定样式?
我是这样想的:
is
。例如is <attribute_name>
或 <attribute_name> is
is
,因为 Ruby 更喜欢使用 ?
后缀作为“is”样式的方法名称(更多信息请参见下文),只留下 <attribute_name>
因此,对于您的具体情况,请像这样命名您的属性:
is_email_hidden
或email_is_hidden
。is
,无论哪种方式,你都会留下 email_hidden
为什么?
?
结尾的方法),并返回 true
或 false
。因此,虽然您的属性在数据库中被命名为 email_hidden
(毫无疑问,有点鲜明的感觉),但您可以而且应该在代码中将其引用为 email_hidden?
。既是为了清晰起见,也是因为这是惯用的 Ruby on Rails 方式。以您给出的这两个名字为例:
hide_email
对于执行此类任务的方法来说是一个好名字,该方法执行所有过程以在系统范围内隐藏电子邮件。但对于返回电子邮件状态的布尔方法来说,它永远不是一个好名字。email_hidden?
,末尾带有问号 (?),是指示电子邮件是否隐藏的布尔方法的正确名称。如果您真的想编写好的代码,请始终考虑 Ruby 约定。即使在考虑系统中的流程时,它们也会为您提供帮助。
那就是
email_hidden?
。这是 Ruby 社区已经习惯的。
请注意最后的
?
。
Ruby 代码似乎说所有布尔方法都应该以 ?
结尾在活动记录上您可以看到
User.valid?
或者在红宝石中你可以找到
[].nil?
[].empty?
如果你想了解 Ruby 的约定,请阅读本文
http://blogs.visoftinc.com/2010/04/12/ruby-beauty-method-naming-conventions/