【发布时间】:2019-12-27 17:17:59
【问题描述】:
查看 Checkstyle 文档中的 GenericWhitespaceCheck,
左尖括号(
<):
- 只能在泛型方法定义中以空格开头。
- 在方法名称或类型名称之前不应以空格开头。
- 不应在所有情况下都跟有空格。
右尖括号(
>):
- 不应在所有情况下都以空格开头。
- 在几乎所有情况下都应后跟空格,菱形运算符和方法名称前面除外。
我不确定我是否完全理解为什么< 后面不应该有空格以及为什么> 前面不应该有一个。
换句话说,为什么Map<String> 是Map < String > 的约定?
这仅仅是因为随着参数数量和深度的增加,没有空格的版本更具可读性。
例如,Map<String, List<String>> 比 Map < String, List < String > > 更具可读性?
作为一个普遍问题,是否有一些存储库/指南解释了 Checkstyle 约定背后的原因?
【问题讨论】:
-
同括号。
(a, b, c(d)),<a, b, c<d>>。而且你不只是把所有东西都挤在一起。您可以在逗号后放置空格,而不是<a,b,c<d>>。 -
推理基本上是,“因为它就是这样”。这是更大的社区接受的惯例;这是零空白和过多空白之间的平衡。另外,它应该是
Map<String, List<String>>(注意逗号后面的空格)。 -
这也类似于写简单的古英语:标点符号后的空格,如逗号、句号、问号和感叹号。打开大括号之前和关闭大括号之后的空格。人们习惯了这种风格,而且当所有东西都挤在一起时,它更容易阅读。
-
Java大部分时间不关心空格。您可以将一个超过 10,000 行的类全部放在一行上,并删除所有非严格需要的空格,例如,从变量名中描述变量类型,它仍然可以编译。我们添加空格(包括换行符)的原因是为了使代码可读。可读性是最重要的。
-
我的评论是为了暗示没有像您给出的 C 示例那样基于行为的原因。在这种情况下,是否存在空格不会改变代码的编译或行为方式。
标签: java whitespace checkstyle readability code-readability