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