这可能是一个奇怪的问题,因为约定通常是有单独的 set 和 get 方法。但在我的情况下,它有点不同:函数的参数决定该函数是 getter 还是 setter,所以我正在寻找一个函数名来指示这样的函数。
我发现的一些名字是 getset、setget、rw 等,但我觉得这些名字很奇怪。什么样的命名约定适合这些功能?
这可能是一个奇怪的问题,因为约定通常是有单独的 set 和 get 方法。但在我的情况下,它有点不同:函数的参数决定该函数是 getter 还是 setter,所以我正在寻找一个函数名来指示这样的函数。
我发现的一些名字是 getset、setget、rw 等,但我觉得这些名字很奇怪。什么样的命名约定适合这些功能?
在 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)
,因为例如,如果有人调用它会导致微妙的错误。
我一直认为这种命名方法是有道理的,并且我已经编写了一些以这种方式工作的库。
然而,这种命名约定确实可能使代码的读者感到困惑,特别是在可以调用没有尾括号的无参数函数的语言中,因此很难看出是否正在调用函数或是否正在访问公共变量直接地。当然,有些人会将后者称为功能而不是问题......
以它填充的变量的名称命名函数怎么样?和属性一样,当传递的参数为null或其他特殊值时,则为get,否则为set。