Используете ли вы существительные для имен классов, представляющих вызываемые объекты?

Здесь задан более общий вопрос. Считай это продолжением того.

Я понимаю, что классы представляют собой типы объектов, и мы должны использовать существительные в качестве их имен. Но есть функциональные объекты, поддерживаемые многими языками, которые больше похожи на функции, чем на объекты. Должен ли я называть эти классы также существительными или глаголами в этом случае. 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)

6
задан Community 23 May 2017 в 10:29
поделиться