Почему Ruby использует response_to? вместо replys_to?
Мне любопытно, почему связанный с методом Ruby метод проверки, проверяющий, отвечает ли объект методу respond_to? вместо responds_to?
Мне всегда кажется неудобным, но, возможно, потому, что я привык к respondsToSelector в objective-c.
Ответ 1
Matz предпочитает второе лицо единственного числа или третьего лица:
"responds_to?" вероятно, делает больше смысл для говорящих на английском языке, чем "Respond_to?".
Может быть. Но я японский. Рубин не Английский. Это основное правило именования избежать особой формы третьего лица в стандартные библиотеки.
you = Human.new
if you.respond_to?(:knock)
...
end
Ответ 2
Откуда вы знаете, что приемник всегда является третьим лицом единственного числа? Возможно, что приемник будет I, we, you или they, или какая-либо другая вещь, представляющая множественность. В этом случае, вы все равно скажете, что responds_to? более естественен, чем respond_to?? Чтобы сохранить общность, лучше назвать метод как можно более общим. Вместо того, чтобы называть метод у третьего лица сингулярным, имеет смысл называть его в инфинитивной форме по умолчанию, до бесконечности, которая также используется в словарях.