Eclipse Formatter 没有正确缩进

Eclipse Formatter isn't indenting correctly

我们正在为我们的 Eclipse 项目使用 Java Conventions [built-in] 格式化程序。在 Eclipse 中查看代码时,代码在格式化和缩进后看起来符合预期。

我们注意到,如果我们在 Notepad++(或其他应用程序)中打开文件,缩进实际上是不正确的。例如。方法体与方法具有相同的缩进。 此外,如果代码是从 Eclipse 复制的,则缩进不正确。

示例 1

Eclipse

class Example {

    public static void main(String args[]) {
        System.out.println("Hello World!");
    }
}

Notepad++

class Example {

public static void main(String args[]) {
    System.out.println("Hello World!");
}
}

示例 2

Eclipse

public static void main(String args[]) {
    System.out.println("Hello World!");
}

Notepad++

public static void main(String args[]) {
System.out.println("Hello World!");
}

这种行为是预期的吗?

spaces/tabs

的截图

所有字符

Java Conventions [Built-in] 配置文件使用 8 个空格作为制表符。

Notepad 使用 8 个空格,但 Notepad++(以及我使用过的大多数其他 IDE,例如 IntelliJ)使用 4 个空格。

要修复此问题,请复制配置文件并将制表符间距更改为 4

或者 Tab Policy 可以更改为 Spaces Only。我更喜欢这个,因为我不觉得制表符应该用于间距。这个问题是为什么不应该使用制表符的一个例子。

默认的 Eclipse 格式化程序配置文件,Eclipse [内置],显示 tabs 宽度为 4 个空格

相比之下,Java约定[内置],显示tabs宽度为 8 个空格

Code Conventions for the Java Programming Language, 4 - Indentation 给出如下(由我突出显示):

Four spaces should be used as the unit of indentation. The exact construction of the indentation (spaces vs. tabs) is unspecified. Tabs must be set exactly every 8 spaces (not 4).

如今,很少使用原始的 Java 代码约定及其混合制表符策略和 8 个空格的制表符宽度。您可以考虑切换到 Eclipse [内置] 格式化程序配置文件。