【发布时间】:2017-02-16 15:58:12
【问题描述】:
我有一些 Java 代码,其中的 SQL 语句编写为 Java 字符串(请不要使用 OR/M 火焰战争,嵌入式 SQL 就是这样 - 不是我的决定)。
为了便于维护,我在几行代码中将 SQL 语句从语义上分解为几个串联的字符串。所以不要像这样:
String query = "SELECT FOO, BAR, BAZ FROM ABC WHERE BAR > 4";
我有类似的东西:
String query =
"SELECT FOO, BAR, BAZ" +
" FROM ABC " +
" WHERE BAR > 4 ";
这种风格使 SQL 更易于阅读和维护(恕我直言),尤其是对于较大的查询。例如,我可以将我的编辑器置于“覆盖”模式并相当容易地就地修改文本。
请注意,此问题泛化到 SQL 的特定示例之外。使用任何垂直格式编写的任何代码,尤其是表格结构,都容易被漂亮的打印机破坏。
现在,一些项目成员使用 Eclipse 编辑器,当他们格式化整个源文件时,语义格式经常被破坏。
有没有办法指示 Eclipse 在格式方面忽略某些源代码行?
我正在寻找类似于切换 Eclipse 格式化程序的特殊注释之类的东西。理想情况下,可以将这样的注释配置为我们选择的任何内容,并且其他格式化程序也可以通过编程来尊重它:
// STOP-ECLIPSE-FORMATTING
String query =
"SELECT FOO, BAR, BAZ" +
" FROM ABC " +
" WHERE BAR > 4 ";
// START-ECLIPSE-FORMATTING
显然,一个“解决方案”是让我们的团队成员标准化一些外部格式化程序,例如 Jalopy 或 JIndent,但这不是这个问题的目的(也不是我对这个项目的决定):我我专门寻找一种方法来临时避免使用 Eclipse 格式化程序。
理想情况下,一个解决方案将允许我插入 Eclipse 格式化程序的指令不需要团队成员使用 Eclipse 进行任何 IDE 重新配置(除了可能选择与格式化程序无关的命令注释:STOP-ECLIPSE-FORMATTING → STOP-FORMATTING)。
【问题讨论】:
-
我们遇到了这个问题。 Eclipse should 有一个选项,即总是在一个 + 所在的 String 构造函数中换行,而不管字符串的下一位是否适合该行。但事实并非如此。 :-(
-
显然这个特性是在 Eclipse 3.6M6 中添加的:bugs.eclipse.org/bugs/show_bug.cgi?id=27079
-
注意:如果你只是想防止eclipse弄乱你的cmets,那么你可以在每行前面使用//。要注释掉一个块,突出显示并按 Ctrl+/。
-
请注意,现在 10 年后,Java 14 可能会带来多行字符串,这将成为过去。
标签: java eclipse code-formatting pretty-print eclipse-formatter