在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