方法名称可以以问号?
def has_completed?
return count > 10
end
但变量名不能。
这是什么原因?变量名也以同样的方式结束不方便吗?鉴于我们通常无法通过查看名称foobar
来判断foobar
是方法还是变量,为什么?
案例的例外?
我应该如何使用它?也许总是在代码中使用has
或is
?
if process_has_completed
...
end
if user_is_using_console
...
end
答案 0 :(得分:34)
你必须要求Matz得到一个权威的答案。但是,
finished?
这样的变量意味着一种特定的类型(布尔值),这似乎与我相矛盾。答案 1 :(得分:5)
现在这只是一个想法,但我认为名称如empty?
的方法建议必须在内部和对象或类中进行某种检查(取决于上下文)。此检查或评估意味着必须执行操作。总的来说,由于我们要求(因此,?
)某个状态的对象,意味着对象的状态可能会在整个应用程序的生命周期中发生变化。变量可能已过时,但?
- 方法(检查)将在特定时刻完成,从而提供可以以布尔形式呈现的某些状态的最新信息。
所以我想认为这是设计师(Matz)提供的设计约束,以强制实施更合理,接近现实的编码方法。