我正在尝试清理我们的遗留代码,并注意到有很多条件代码可以合并。
示例 -
if (file != null) {
if (file.isFile() || file.isDirectory()) {
/* ... */
}
}
这可以重构为
if (file != null && (file.isFile() || file.isDirectory())) {
/* ... */
}
手动执行此更改很痛苦。所以,我试图检查intelliji中的检查工具和模板重构,以帮助我进行批量代码重构。
无法找到这个eclipse IDE。
请建议,Intelliji / Eclipse中是否有此选项
答案 0 :(得分:2)
在IntelliJ IDEA中,将文本光标放在第一个if
关键字上,按 Alt + 输入并调用Merge nested 'if's
。
您还可以使用结构搜索&替换以批量执行此操作。使用以下搜索模式:
if ($a$) {
if ($b$) {
$statement$;
} else $void$;
} else $void$;
点击Edit Variables...
并将statement
的最小和最大数量设置为0,∞
。同时将void
的最小和最大数量设置为0,0
使用以下替换模式:
if (($a$) && ($b$)) {
$statement$;
}
请注意,在某些情况下,此替换将引入冗余括号,以防止更改代码的语义。稍后可以通过调用Run Inspection by Name
并运行Unnecessary parentheses
检查来再次删除它们。
答案 1 :(得分:2)
AutoRefactor Eclipse插件可以批量执行此操作。
请参阅http://autorefactor.org/html/samples.html并选择CollapseIfStatementSample.java
。您可以在整个文件,包甚至项目上执行此操作。
还有一个重构来删除不必要的括号:SimplifyExpressionSample.java
(参见例如第144行)。