格式化 try-with-resources 的代码约定是啥? [关闭]
Posted
技术标签:
【中文标题】格式化 try-with-resources 的代码约定是啥? [关闭]【英文标题】: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
的缩进增加一个。当事情几乎(但不完全)排成一行时,我不喜欢它。
【参考方案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
谢谢,好点。似乎他们用;
和换行符分隔资源,并对齐它们。最后,他们将左括号保持在自己的行上。后者在我看来有点不寻常。以上是关于格式化 try-with-resources 的代码约定是啥? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
Try-with-resource'必须是变量声明'[重复]
在 Netbeans 中使用 try-with-resources