什么是#34;语法并行元素"在Java?

时间:2014-09-01 18:13:24

标签: java checkstyle

有一条规则" 4.5.2 Indent continuation lines at least +4 spaces"在Google Java Style Guide中说:

  
    

通常,当且仅当它们以语法并行元素开头时,两个连续行使用相同的缩进级别。

  

有人可以解释" 语法并行元素"是什么意思并为这种情况提供一些例子?

2 个答案:

答案 0 :(得分:1)

您引用的Google Java Style指南是指所谓的 continuation indent ,它是换行后使用的缩进。在这种情况下,(可能)语法并行元素是您要包装的表达式。

示例1(语法并行):

foo("bar"
    + "baz"
    + "boo");

示例2( not 语法并行):

foo("bar"
    + foo2("bar"
        + "baz"));

在示例2中,对foo2()的方法调用嵌套在foo()的调用中,因此foo2()的参数与{{1}的参数不在同一级别换句话说:它们不是“语法并行”。

在Google Java Style中,这意味着foo()部分可能缩进超过4个空格。

话虽如此,我认为“语法平行”一词是该文件作者的创作;至少我没有看到它在其他任何地方使用过。

答案 1 :(得分:0)

简而言之,这意味着如果将两个元素解析为同一个构造,那么它们将保持相同的缩进。例如。

String[] elements = new String[] { "bob",
                                   "joe",
                                   "pete" };

有一定道理(即使它没有以这种方式格式化),因为它们是同一数组定义中的所有String个元素。

也在一个区块内

 {
    System.out.println("hi");
    actNow(input);
    for (int i = 0; i < j; i++) {
      return 5;
    }
 }

System.out.println("hi");actNow(input);和for循环是相同缩进的,因为它们是同一个块中的所有语句。请注意,return 5;没有缩进,因为它是for循环块中的语句。因此,return 5;在语法上与其他语句不同,因为它具有不同的块位置。