在Ruby中,有一个约定使方法名以一个问号结束,以表明它的返回值是布尔值。为什么布尔值被认为如此特别?如果你知道某个方法的返回值特别是布尔值,有什么方便吗?毕竟,在Ruby中,可以将各种返回值(getter)方法插入到条件中,而不必关心它是否为布尔值。布尔值是什么特别?
我认为使用问号只是表示一个布尔值是浪费。应该有更多有用的用途。我有很多用例,我想要一对getter和setter方法,其中setter方法应返回self
,以便我可以在方法链中使用它。并将它们命名为get_foo
和set_foo
看起来很麻烦。而不是按照惯例,我很想来命名一对getter和setter方法是这样的:
def foo?; @foo end
def foo v; @foo = v end
其中@foo
值不(一定)布尔。 (除了潜在的批评,打破惯例会混淆其他程序员),这样做有什么问题吗?
这只是一个约定的问题。在其他语言中,你会写“isFoo”(这也意味着一个布尔值),所以“foo?”为您节省一个高超的人物。 – 2013-02-21 16:34:01
@Chris我的观点是,为什么你需要首先指出某件事是布尔型的。我认为区分getter和setter方法更重要,并且有一对这样的方法比拥有一对返回布尔值和其他非布尔值的方法更加频繁,您需要区分它们。 – sawa 2013-02-21 16:38:04