4

这可能是一个奇怪的问题,因为约定通常是有单独的 set 和 get 方法。但在我的情况下,它有点不同:函数的参数决定该函数是 getter 还是 setter,所以我正在寻找一个函数名来指示这样的函数。

我发现的一些名字是 getset、setget、rw 等,但我觉得这些名字很奇怪。什么样的命名约定适合这些功能?

4

2 回答 2

5

在 Java bean 出现 get/set 命名约定之前,人们经常会看到完全按照您描述的功能(特别是 C++ 和其他 OO 语言中的方法)。

它们通常以它们设置或获得的变量命名,例如:

int counter_;

int counter () {
    return counter_;
}

int counter (int c) {
    counter_ = c;
    return counter_;
}

在变量和函数具有不同命名空间的语言中,您甚至可以让变量和 get/set 函数具有完全相同的名称(不需要尾随 _,如我在此处所示)。

在具有默认参数的语言中,您可能会将 getter 和 setter 编写为一个函数,例如:

int counter (int c = MAX_INT) {
    if (c != MAX_INT) {
        counter_ = c;
    }
    return counter_;
}

...虽然我并不是特别热衷于这种方法counter (MAX_INT),因为例如,如果有人调用它会导致微妙的错误。

我一直认为这种命名方法是有道理的,并且我已经编写了一些以这种方式工作的库。

然而,这种命名约定确实可能使代码的读者感到困惑,特别是在可以调用没有尾括号的无参数函数的语言中,因此很难看出是否正在调用函数或是否正在访问公共变量直接地。当然,有些人会将后者称为功能而不是问题......

于 2013-04-01T04:59:37.937 回答
1

以它填充的变量的名称命名函数怎么样?和属性一样,当传递的参数为null或其他特殊值时,则为get,否则为set。

于 2013-04-01T04:59:26.563 回答