在 Ruby 中,有一个约定,方法名称以问号结尾,表示它的返回值是布尔值。为什么布尔值被认为如此特别?如果您知道方法的返回值是特别布尔值,有什么方便的吗?毕竟,在 Ruby 中,您可以将各种返回值(getter)方法插入到条件中,而无需关心它是否为布尔值。
我认为仅使用问号来表示布尔值是一种浪费。应该有更多有用的用途。我有很多用例,我想要一对 getter 和 setter 方法,setter 方法应该返回self
,以便我可以在方法链中使用它。get_foo
并将它们命名为set_foo
看起来很麻烦。我不想遵循约定,而是想像这样命名一对 getter 和 setter 方法:
def foo?; @foo end
def foo v; @foo = v end
其中的值@foo
不是(必然)布尔值。(除了可能会批评打破惯例会混淆其他程序员),这样做有什么问题吗?