gpt4 book ai didi

coding-style - 您是否将名词用于表示可调用对象的类名?

转载 作者:行者123 更新时间:2023-12-04 14:03:57 24 4
gpt4 key购买 nike

有一个更通用的 question在这里问。将此视为对它的扩展。
我知道类代表对象的类型,我们应该使用名词作为它们的名称。但是还有function objects在许多语言中都支持,这些语言更像是函数而不是对象。在这种情况下,我是否应该将这些类也命名为名词,或者动词也可以。 doSomething()从语义上讲,比 Something() 更有意义.
更新/结论
我在这方面得到的两个最高投票答案有不同的看法:

Attila

In the case of functors, however, they represent "action", so naming them with a verb (or some sort of noun-verb combination) is more appropriate -- just like you would name a function based on what it is doing.

Rook

The instance of a functor on the other hand is effectively a function, and would perhaps be better named accordingly. Following Jim's suggestion above, 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)

最佳答案

对象(以及类)通常代表“事物”,因此您想用名词命名它们。然而,在仿函数的情况下,它们代表“ Action ”,所以用动词(或某种名词-动词组合)命名它们更合适——就像你根据函数的作用来命名函数一样。

一般而言,您会希望按照它们的用途来命名事物(对象、函数等),即它们在程序/世界中代表什么。

您可以将仿函数视为具有状态的函数(因此是“ Action ”)。由于实现这一点的干净方法(具有与您的“ Action ”相关联的状态)是创建一个存储状态的对象,因此您将获得一个对象,这实际上是一个“ Action ”(一个奇特的函数)。

请注意,上述内容适用于可以创建纯仿函数的语言,即调用与常规函数(例如 C++)相同的对象。在不支持此功能的语言中(即,您必须调用 operator() 以外的方法,例如 command.do() ),您可能希望将类似命令的类/对象命名为名词,并将该方法命名为 a动词。

关于coding-style - 您是否将名词用于表示可调用对象的类名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10811169/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com