Здесь задан более общий вопрос. Считай это продолжением того.
Я понимаю, что классы представляют собой типы объектов, и мы должны использовать существительные в качестве их имен. Но есть функциональные объекты, поддерживаемые многими языками, которые больше похожи на функции, чем на объекты. Должен ли я называть эти классы также существительными или глаголами в этом случае. doSomething()
семантически имеет больше смысла, чем Something()
.
Обновление / Заключение
Два наиболее популярных ответа, которые я получил по этому поводу, разделяют неоднозначное мнение:
Аттила
В случае функторов, однако, они представляют «действие», поэтому называя их глаголом (или какая-то комбинация существительного и глагола) более уместно — точно так же, как вы назвали бы функцию на основе того, что она делает.
Rook
Экземпляр функтора, с другой стороны, фактически является функцией, и, возможно, лучше было бы назвать ее соответствующим образом.Следуя приведенному выше предложению Джима,
SomethingDoer doSomething; сделай что-нибудь();
И то, и другое, после прохождения некоторого кода, похоже, является обычной практикой. В реализации GNU stl я нашел такие классы, как negate
, plus
, minus
(bits/stl_function.h) и т. д. И variate_generator
, mersenne_twister
(tr1/random.h). Точно так же в boost я нашел такие классы, как base_visitor
, Pregence_Recorder
(graph/visitors.hpp), а также inverse
, inplace_erase
(icl/ functors.hpp)