格式化 try-with-resources 的代码约定是什么?

Rey*_*les 3 java readability indentation java-7 try-with-resources

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

try (
        InputStream in1 = ...;
        InputStream in2 = ...;
    ) {
    ...;
}
Run Code Online (Sandbox Code Playgroud)

我还看到人们使用分号作为分隔符而不是终止符,并且只在每个资源之间使用换行符,如下所示:

try (InputStream in1 = ...;
    InputStream in2 = ...) {
    ...;
}
Run Code Online (Sandbox Code Playgroud)

什么是公约?

tuc*_*uxi 6

涉及美学没有“对”或“错”;每个组织最终都会融合到自己的编码风格上。但是,经常从知名项目或组织借用编码风格。

最常用的 Java 代码库之一是 JDK 本身。经过几次 grep 之后,我在 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;
    }
}
Run Code Online (Sandbox Code Playgroud)

(JDK 中可能还有其他示例,但一般来说,这些人认真对待他们的指导方针,所以我怀疑他们会有所不同)。

  • 左花括号应该与 JarInputStream 在同一行...参见例如 [`Files.readAllBytes`](http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/ 8-b132/java/nio/file/Files.java#Files.readAllBytes%28java.nio.file.Path%29) (3认同)