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
- 然后只需删除
,因为Ruby更喜欢“is”样式的方法名的is
后缀(更多信息请参见下文),只需隐藏?
电子邮件即可
- 从“电子邮件被隐藏”这个问题开始?。在代码中可以表示为:
李>email\u是隐藏的
- 删除
,您将保留is
电子邮件\u hidden
- RubyonRails定义布尔属性的“谓词”版本(以
结尾),并按预期返回?
/true
。因此,当您的属性在数据库中被命名为false
时,为了清晰起见,您应该在代码中将其引用为email\u hidden
,Ruby on Rails约定也是如此email\u hidden?
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?