我有一些Java代码,其中SQL语句编写为Java字符串(请不要使用OR/M flamewars,嵌入式SQL就是这样 - 不是我的决定).
为了便于维护,我在几行代码中将SQL语句在语义上分解为几个连接的字符串.所以,而不是像:
String query = "SELECT FOO, BAR, BAZ FROM ABC WHERE BAR > 4";
Run Code Online (Sandbox Code Playgroud)
我有类似的东西:
String query =
"SELECT FOO, BAR, BAZ" +
" FROM ABC " +
" WHERE BAR > 4 ";
Run Code Online (Sandbox Code Playgroud)
这种风格使SQL更易于阅读和维护(恕我直言),特别是对于较大的查询.例如,我可以将我的编辑器置于"覆盖"模式,并相当容易地就地修改文本.
请注意,此问题超出了SQL的特定示例.任何使用任何垂直格式编写的代码,特别是表格结构,都容易被漂亮的打印机破坏.
现在,一些项目成员使用Eclipse编辑器,语义格式在格式化整个源文件时经常被破坏.
有没有办法指示Eclipse在格式化方面忽略某些源代码行?
我正在寻找像切换Eclipse格式化程序的特殊注释.理想情况下,这样的评论可以配置为我们选择的任何内容,其他格式化程序也可以编程为尊重它:
// STOP-ECLIPSE-FORMATTING
String query =
"SELECT FOO, BAR, BAZ" +
" FROM ABC " +
" WHERE BAR > 4 ";
// START-ECLIPSE-FORMATTING
Run Code Online (Sandbox Code Playgroud)
显然,一个"解决方案"是让我们的团队成员对Jalopy或JIndent这样的外部格式化程序进行标准化,但这不是这个问题的原因(也不是我对这个项目的决定):我正在寻找一种方法在临时的基础上避免使用Eclipse格式化程序.
理想情况下,解决方案将允许我插入Eclipse格式化程序的指令,而无需团队成员使用Eclipse进行任何IDE重新配置(除了可能选择格式化程序无关的命令注释:STOP-ECLIPSE-FORMATTING→ STOP-FORMATTING).
在html文件中,有一些代码使用自定义模板语言:
<script type="text/javascript">
function ($scope, JsRoutes) {
$scope.rows = [
${"#{list rows, as: 'row', separator: ','}"}
{
#{list fieldConfigs, as: 'f', separator: ','}
${f.name} : ${'$'}{row.${f.name}.toJson()}#{/list}
}
${'#{/list}'}
]
}
</script>
Run Code Online (Sandbox Code Playgroud)
是否可以配置intellij-idea不格式化它(但格式化文档的其他部分)?由于想法会使格式化后难以阅读:
<script type="text/javascript">
function ($scope, JsRoutes) {
$scope.rows = [
${"#{list rows, as: 'row', separator: ','}"}
{
#{list fieldConfigs, as: 'f', separator: ','}
${f.name} :
${'$'}{
row.${f.name}.toJson()
}#{/list}
}
${'#{/list}'}
]
}
</script>
Run Code Online (Sandbox Code Playgroud) 如何阻止IntelliJ IDEA从.properties文件中删除空行?我想使用空行来分隔文件的各个部分(数据库属性,RabbitMQ属性,业务属性等).
保存文件时,将删除空行.我有IntelliJ IDEA 2016.1.2,带有"保存操作"和"属性"插件.我看不到在任何地方控制.properties文件中的空行的选项.
Intellij Idea在camel路由中格式化代码,如下所示:
from("direct:loop")
.log("Loop: ${header[loopCount]}")
.choice()
.when(simple("header[loopCount] < 10"))
.process(exchange -> {
Message in = exchange.getIn();
in.setHeader("loopCount", in.getHeader("loopCount", Integer.class) + 1);
})
.to("direct:loop")
.otherwise()
.log("Exiting loop")
.end();
Run Code Online (Sandbox Code Playgroud)
是否有任何插件或其他方法可以这样做:
from("direct:loop")
.log("Loop: ${header[loopCount]}")
.choice()
.when(simple("header[loopCount] < 10"))
.process(exchange -> {
Message in = exchange.getIn();
in.setHeader("loopCount", in.getHeader("loopCount", Integer.class) + 1);
})
.to("direct:loop")
.otherwise()
.log("Exiting loop")
.end();
Run Code Online (Sandbox Code Playgroud)
?