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