有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何重构以下代码

我有一个想要重构的方法,和一些伪代码,如下所示:

if(deletedInfo.isEmpty() && addedInfo.isEmpty()) {
    // some logic codes
} else if (!deletedInfo.isEmpty() && addedInfo.isEmpty()) {
    // some logic codes
} else if (deletedInfo.isEmpty() && !addedInfo.isEmpty()) {
    // some logic codes
} else if(!deletedInfo.isEmpty() && !addedInfo.isEmpty()) {
    // some logic codes
}

有没有合适的模式或算法来重构这些代码

谢谢


共 (2) 个答案

  1. # 1 楼答案

    有几种方法可以做到这一点。这里有一个:

    if (a) {
      if (b) {
        // do J
      } else {
        // do K
      }
    } else {
      if (b) {
        // do L
      } else {
        // do M
      }
    }
    

    您可能更喜欢类似于真值表的东西,尤其是如果您有两个以上的测试要组合:

    int switcher = 0;
    if (a) switcher|=1;
    if (b) switcher|=2;
    switch(switcher) {
      case 0:
        // do J
        break;
      case 1:
        // do K
        break;
      case 2:
        // do L
        break;
      case 3:
        // do M
        break;
    }
    

    我不认为有一种自动“正确”的方式——你必须选择最适合你的情况的方式

  2. # 2 楼答案

    您可以使用以下代码进行重构:

    int val = 0;
    if (deletedInfo.isEmpty()) val |= 0x1;
    if (addedInfo.isEmpty()) val |= 0x2;
    
    switch (val) {
        case 0: // some logic codes
        case 1: // some logic codes
        case 2: // some logic codes
        case 3: // some logic codes
    }