代码之家  ›  专栏  ›  技术社区  ›  Srikanth Balaji

重构-应合并可折叠的“if”语句

  •  3
  • Srikanth Balaji  · 技术社区  · 9 年前

    我试图清理遗留代码,并注意到有许多if条件代码可以合并。

    if (file != null) {
      if (file.isFile() || file.isDirectory()) {
        /* ... */
      }
    }
    

    这可以重构为,

    if (file != null && (file.isFile() || file.isDirectory())) { 
      /* ... */
    }
    

    手动执行此更改是一种痛苦。所以,我试图检查intelliji中的检查工具和模板重构,以帮助我进行批量代码重构。

    敬请建议,Intelliji/Eclipse中是否有此选项

    2 回复  |  直到 9 年前
        1
  •  3
  •   Bas Leijdekkers    9 年前

    if 关键字,按 中高音 + 进来 并调用 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 视察

        2
  •  2
  •   howlger df778899    9 年前

    这个 AutoRefactor Eclipse插件可以批量完成这项工作。

    http://autorefactor.org/html/samples.html 并选择 CollapseIfStatementSample.java

    还有一种重构方法可以删除不必要的括号: SimplifyExpressionSample.java