Ruby on rails 布尔属性的命名约定

Ruby on rails 布尔属性的命名约定,ruby-on-rails,ruby,attributes,naming-conventions,Ruby On Rails,Ruby,Attributes,Naming Conventions,我想写一些别人也能容易理解的代码 像hide\u email或email\u hidden这样的布尔属性是否具有常规样式?即email\u hidden?。这是Ruby社区已经习惯的 请注意结尾处的?。以您给出的两个名称为例: hide_email对于执行此类任务的方法来说是一个很好的名称,该方法执行所有过程以在系统范围内隐藏电子邮件。但对于返回电子邮件状态的布尔方法来说,这永远都不是一个好名字 email\u hidden?结尾带有问号(?)是指示电子邮件是否隐藏的布尔方法的正确名称 如果

我想写一些别人也能容易理解的代码


hide\u email
email\u hidden
这样的布尔属性是否具有常规样式?

email\u hidden?
。这是Ruby社区已经习惯的


请注意结尾处的

以您给出的两个名称为例:

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

如果你真的想写出好的代码,总是要考虑Ruby约定。即使在考虑系统中的进程时,它们也会对您有所帮助。

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

在活动记录中,您可以看到

User.valid?
或者你可以在ruby中找到

[].nil?
[].empty?
如果你想了解Ruby的约定,请阅读以下内容


我是这样想的:

  • 布尔属性应该回答一个简单的是/否问题
  • 问“是吗?”是问是/否问题的简单方法
  • 因此,布尔属性名应该完成句子
    is
  • 然后只需删除
    is
    ,因为Ruby更喜欢“is”样式的方法名的
    后缀(更多信息请参见下文),只需隐藏
    电子邮件即可
因此,对于您的特定情况,请将属性命名为:

  • 从“电子邮件被隐藏”这个问题开始?。在代码中可以表示为:
    email\u是隐藏的
  • 删除
    is
    ,您将保留
    电子邮件\u hidden
  • RubyonRails定义布尔属性的“谓词”版本(以
    结尾),并按预期返回
    true
    /
    false
    。因此,当您的属性在数据库中被命名为
    email\u hidden
    时,为了清晰起见,您应该在代码中将其引用为
    email\u hidden?
    ,Ruby on Rails约定也是如此

我想您不是想用问号保存属性吧?我知道在Rails中可以用问号调用所有属性。我明白你的意思。我以为你有一个其他人想要查询的布尔属性。不,您不想使用
email\u hidden
email\u hidden?
作为setter方法。您可能希望使用类似于
hide\u email
的动词来表示隐藏电子邮件的方法,并使用
email\u hidden=
来允许其他人为您设置电子邮件。他们会以您提问的方式问您。。。你说的似乎是检查电子邮件状态的布尔方法,而不是执行隐藏过程的方法,成功时返回true,失败时返回false。问号不能在变量中,只能在方法中names@maxpleaner说得好。我编辑它是为了在布尔值之后插入单词“method”。问号是布尔值方法的一个很好的系统,但它不能用于变量名。变量名,如定义为
attr\u访问器的变量名,只需省略
,在ruby中,您还可以看到
obj.is\u a?(Something)
hash.has\u key?(:foo)
。也就是说,当您提到
self
时,可以使用
is\u XXX?
has\u XXX?