布尔属性的命名约定

Naming conventions for boolean attributes

我想编写其他人也很容易理解的代码。

hide_emailemail_hidden 这样的布尔属性有约定样式吗?

那就是 email_hidden?。 Ruby 社区已经习惯了。

请注意最后的?

以您给出的这两个名字为例:

  • hide_email 是执行此类任务的方法的好名字,该方法执行所有过程以在系统范围内隐藏电子邮件。但对于返回电子邮件状态的布尔方法来说,这绝不是一个好名字。
  • email_hidden?,末尾有问号 (?),是指示电子邮件是否隐藏的布尔方法的正确名称。

如果您真的想编写好的代码,请始终考虑 Ruby 约定。即使在考虑系统中的流程时,它们也会为您提供帮助。

ruby 代码说所有布尔方法都应该以 ?

结束

在活动记录中你可以看到

User.valid?

或者在 ruby 你可以找到

[].nil?
[].empty?

如果您想了解 Ruby 的约定,请阅读此

http://blogs.visoftinc.com/2010/04/12/ruby-beauty-method-naming-conventions/

我是这样想的:

  • 布尔属性应该回答一个简单的 yes/no 问题。
  • 询问 "is?" 是询问 yes/no 问题的简单方法。
  • 所以布尔属性名应该完成句子 is <attribute_name>
  • 然后只需删除 is 因为 Ruby 更喜欢 "is" 风格的方法名称的 ? 后缀(更多信息请参见下文),只剩下 email_hidden

因此,对于您的具体情况,将您的属性命名为:

  • 从问题 "email is hidden"? 开始。在代码中可以表示为:email_is_hidden
  • 删除 is,剩下 email_hidden
  • Ruby on Rails 定义布尔属性的 "predicate" 版本(以 ? 结尾)和 returns true/false 符合预期。因此,虽然您的属性在数据库中被命名为 email_hidden,但为了清楚起见,您应该在代码中将其引用为 email_hidden?,并且 Rails 约定中的 Ruby 也是如此。