Java 使用资源设置格式的代码约定是什么?

Java 使用资源设置格式的代码约定是什么?,java,java-7,indentation,readability,try-with-resources,Java,Java 7,Indentation,Readability,Try With Resources,我想知道对于使用资源格式化try块,特别是使用多个资源格式化try块的代码约定是什么。目前,我将每个资源放在自己的行中,以分号结尾,并使用vim的缩进级别(2个制表符),如下所示: try ( InputStream in1 = ...; InputStream in2 = ...; ) { ...; } try (InputStream in1 = ...; InputStream in2 = ...) { ...; } 我还

我想知道对于使用资源格式化try块,特别是使用多个资源格式化try块的代码约定是什么。目前,我将每个资源放在自己的行中,以分号结尾,并使用vim的缩进级别(2个制表符),如下所示:

try (
        InputStream in1 = ...;
        InputStream in2 = ...;
    ) {
    ...;
}
try (InputStream in1 = ...;
    InputStream in2 = ...) {
    ...;
}
我还看到人们使用分号作为分隔符而不是终止符,并且在每个资源之间只使用换行符,如下所示:

try (
        InputStream in1 = ...;
        InputStream in2 = ...;
    ) {
    ...;
}
try (InputStream in1 = ...;
    InputStream in2 = ...) {
    ...;
}
什么是惯例?

当涉及美学时,没有“对”或“错”;每个组织最终都会汇聚到自己的编码风格上。然而,从著名的项目或组织中借用编码样式是很常见的

最常用的Java代码库之一是JDK本身。经过几次greps之后,我在OpenJDK 8的
java/lang/Package.java
中找到了一个多行示例:

/*
 * Returns the Manifest for the specified JAR file name.
 */
private static Manifest loadManifest(String fn) {
    try (FileInputStream fis = new FileInputStream(fn);
         JarInputStream jis = new JarInputStream(fis, false))
    {
        return jis.getManifest();
    } catch (IOException e) {
        return null;
    }
}

(JDK中可能还有其他例子,但一般来说,这些人认真遵守他们的指导原则,因此我怀疑他们是否会有所不同)。

公约是你的公司/组织告诉你的,通常……我认为公约实际上没有走那么远,因此,您应该执行与现有代码一致的操作。如果您没有任何预先存在的代码,只需选择您觉得更好的代码。但不要忘记可读性。您应该在您决定使用的任何约定上保持一致。然而,如果在一个单独的用例中可读性与约定相冲突,那么选择可读性。我肯定会将第二个选项中的
in2
缩进增加1。我不喜欢事情几乎(但不是完全)排成一行的情况。开头的花括号应该和JarInputStream在同一行上。。。例如,请参见“谢谢,要点”。似乎他们用
分隔了资源和换行符,并将它们对齐。最后,它们将开始括号保留在自己的行上。后者在我看来有点不寻常。