java - 命名静态构造函数方法的首选 Java 约定是什么

标签 java

命名静态构造函数方法的首选约定是什么?例如,假设我有一个 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 方法命名。可能性包括:

  1. valueOf - 一些 Java 类遵循这一点,例如Integer.valueOf,但这仅用于装箱基元吗?
  2. of - 更简洁。 Error.of(msg, i) 似乎可读。
  3. 错误 - 一些优点和缺点 - 见下文。
  4. create - 过分强调机制(创建某些东西)而不是意图(给我一个值)。例如,某些实现可能会缓存和重用值,这意味着某些东西并不总是实际创建的。
  5. 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 method
  • parse - static factory method focussed on parsing
  • [...]

of 看起来像是适合您的用例的合理候选者,但可能比选择更重要的是一致性。

关于java - 命名静态构造函数方法的首选 Java 约定是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28197712/

相关文章:

java - 如何使用数字格式类格式化货币

java - FutureTask 的自定义取消

java - 如何将图像插入SqLite DB

java - RSA加密(java)读取字符串输入

java - .class文件反编译后看不到Super()

java - 如何形成 JPA 查询?

java - 父子类java出现不兼容错误

c# - C#应用程序如何调用java应用程序

java - 如何将第 3 方库添加到 Eclipse RCP 中?

java - Zipentry 不是在 Android 中按顺序流式传输文件吗?