布尔属性的命名约定

问题描述 投票:0回答:4

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

诸如

hide_email
email_hidden
之类的布尔属性是否具有约定样式?

ruby-on-rails ruby attributes naming-conventions
4个回答
35
投票

我是这样想的:

  • 布尔属性应该回答简单的是/否问题。
  • 问“是?”是提出是/否问题的简单方法。
  • 因此,布尔属性可以被视为一个小短语,包含
    is
    。例如
    is <attribute_name>
    <attribute_name> is
  • 然后只需删除
    is
    ,因为 Ruby 更喜欢使用
    ?
    后缀作为“is”样式的方法名称(更多信息请参见下文),只留下
    <attribute_name>

因此,对于您的具体情况,请像这样命名您的属性:

  • 从“电子邮件是否被隐藏?”这个问题开始或“电子邮件被隐藏?”。可以用代码表示为:
    is_email_hidden
    email_is_hidden
  • 删除
    is
    ,无论哪种方式,你都会留下
    email_hidden

为什么?

  • Ruby on Rails 定义了一个与所有布尔属性相对应的“谓词”方法(以
    ?
    结尾的方法),并返回
    true
    false
    。因此,虽然您的属性在数据库中被命名为
    email_hidden
    (毫无疑问,有点鲜明的感觉),但您可以而且应该在代码中将其引用为
    email_hidden?
    。既是为了清晰起见,也是因为这是惯用的 Ruby on Rails 方式。

3
投票

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

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

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


2
投票

那就是

email_hidden?
。这是 Ruby 社区已经习惯的。

请注意最后的

?


2
投票

Ruby 代码似乎说所有布尔方法都应该以 ?

结尾

在活动记录上您可以看到

User.valid?

或者在红宝石中你可以找到

[].nil?
[].empty?

如果你想了解 Ruby 的约定,请阅读本文

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

© www.soinside.com 2019 - 2024. All rights reserved.