命名静态构造函数方法的首选约定是什么?例如,假设我有一个 Error 类,它有一个构造函数,它只是初始化字段,然后是一些静态构造函数方法:
class Error {
static Error xxxx(String msg) {
return new Error(msg, -1);
}
static Error xxxx(String msg, int line) {
return new Error(msg, line);
}
final String msg;
final int line;
private Error(String msg, int line) {
this.msg = msg;
this.line = line
}
}
我应该为 xxxx
方法命名。可能性包括:
valueOf
- 一些 Java 类遵循这一点,例如Integer.valueOf
,但这仅用于装箱基元吗?of
- 更简洁。Error.of(msg, i)
似乎可读。错误
- 一些优点和缺点 - 见下文。create
- 过分强调机制(创建某些东西)而不是意图(给我一个值)。例如,某些实现可能会缓存和重用值,这意味着某些东西并不总是实际创建的。createError
- 冗长,与create
相同的问题。
我倾向于以函数式风格进行编码,并且,可能因此,我的偏好是#3,部分原因是如果我静态导入 Error
那么我可以将其简单地称为 error (msg, i)
,它看起来可读并且模仿了实际的构造函数用法。但是,它可能会与同名的局部变量引起混淆。例如 error = error(msg, i);
看起来很困惑。
我有兴趣看到支持特定方法的证据或论据,而不是简单的“我喜欢 xxx”答案。
最佳答案
如果最近添加的 JDK 是一个很好的指示,那么您可以查看 java.time :
The API has a relatively large surface area in terms of number of methods. This is made manageable through the use of consistent method prefixes.
of
- static factory methodparse
- static factory method focussed on parsing- [...]
of
看起来像是适合您的用例的合理候选者,但可能比选择更重要的是一致性。
关于java - 命名静态构造函数方法的首选 Java 约定是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28197712/