这里有一个更通用的问题。将此视为对此的扩展。
我知道类代表对象的类型,我们应该使用名词作为它们的名称。但是许多语言支持的函数对象更像函数而不是对象。我应该将这些类也命名为名词,还是在这种情况下可以使用动词。doSomething()
,从语义上讲,比 更有意义Something()
。
更新/结论
我得到的两个投票最多的答案意见不一:
阿提拉
然而,在函子的情况下,它们代表“动作”,因此用动词(或某种名词-动词组合)命名它们更合适——就像根据函数的作用命名函数一样。
车
另一方面,仿函数的实例实际上是一个函数,因此可能会更好地命名。按照上面吉姆的建议,
SomethingDoer doSomething; doSomething();
他们两个,在经历了一些代码之后,似乎是常见的做法。在 stl 的 GNU 实现中,我发现了negate
, plus
, minus
(bits/stl_function.h) 等类以及variate_generator
, mersenne_twister
(tr1/random.h)。同样,在 boost 中,我发现了base_visitor
, predecessor_recorder
(graph/visitors.hpp) 和inverse
, inplace_erase
(icl/functors.hpp) 之类的类