【问题标题】:What is the code convention for formatting try-with-resources? [closed]格式化 try-with-resources 的代码约定是什么? [关闭]
【发布时间】:2015-06-10 10:41:59
【问题描述】:

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

try (
        InputStream in1 = ...;
        InputStream in2 = ...;
    ) {
    ...;
}

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

try (InputStream in1 = ...;
    InputStream in2 = ...) {
    ...;
}

什么是约定?

【问题讨论】:

  • 惯例是您的公司/组织告诉您的,通常...
  • 我认为约定实际上并没有那么远,所以无论你应该做什么与​​预先存在的代码一致。如果您没有任何预先存在的代码,请选择您觉得更好的代码。
  • 但不要忘记可读性。
  • 无论您决定使用哪种约定,您都应该保持一致。但是,如果在孤立的用例中可读性与约定冲突,则选择可读性。
  • 我肯定会在第二个选项中将in2 的缩进增加一个。当事情几乎(但不完全)排成一行时,我不喜欢它。

标签: java java-7 indentation readability try-with-resources


【解决方案1】:

美学没有“对”或“错”之分;每个组织最终都采用自己的编码风格。但是,经常会借鉴知名项目或组织的编码风格。

最常用的 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;
    }
}

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

【讨论】:

  • 左大括号应该与 JarInputStream 在同一行...参见例如Files.readAllBytes
  • 谢谢,好点。似乎他们用; 和换行符分隔资源,并对齐它们。最后,他们将左括号保持在自己的行上。后者在我看来有点不寻常。
猜你喜欢
  • 2019-03-12
  • 2017-12-04
  • 2013-07-18
  • 1970-01-01
  • 2014-05-05
  • 2020-01-01
  • 2016-09-29
  • 2013-07-21
  • 1970-01-01
相关资源
最近更新 更多