【问题标题】:Which of these two examples is a better code design?这两个示例中哪个是更好的代码设计?
【发布时间】:2011-05-29 18:04:19
【问题描述】:

示例 #1

public void mouseClicked(MouseEvent e) {
    if (isShowParameters)
       isShowParameters = false;
    else
       isShowParameters = true;

    ParametersWindows.getInstance().setVisible(isShowParameters);
}  

示例 #2

public void mouseClicked(MouseEvent e) {
    isShowParameters = !isShowParameters;
    ParametersWindows.getInstance().setVisible(isShowParameters);
}

【问题讨论】:

  • 在这两种情况下,缩进都是邪恶的。
  • 可惜应该是isShowParameters ^=true;
  • 这个问题不清楚。您是在问如何让每个示例更高效,或者两者中哪一个是更好的代码设计?
  • ParametersWindows.getInstance().setVisible(isShowParameters = (isShowParameters==true) ? false : true); 甚至ParametersWindows.getInstance().setVisible(isShowParameters = (isShowParameters) ? false : true);
  • @Petar,该构造在 b[i++]^=true;b[calcIndex(p)+base]^=true; 之类的情况下也很有用,否则需要将索引保存在临时变量中。

标签: java swing coding-style


【解决方案1】:

第二个更清晰,更有逻辑。

【讨论】:

    【解决方案2】:

    我更喜欢isShowParameters = !isShowParameters;,因为它更短。较短的程序更容易理解和维护。但是你那一大堆无与伦比的右括号是怎么回事?这似乎是一种糟糕的编码风格。

    【讨论】:

      【解决方案3】:
      ParametersWindows.getInstance().setVisible(!isShowParameters);
      

      ;)

      更新

      仅当您不需要更新字段本身时才有效。

      【讨论】:

      • 这不起作用 b/c 它确实 更改字段 isShowParameters
      • 字段值不变。在第二个按下的窗体消失。
      • 哦,我明白了。假设它在其他地方使用,那么我会选择选项#2。
      • 您总是可以使用ParametersWindows.getInstance().setVisible(isShowParameters = !isShowParameters);,尽管这可能会让人感到困惑,因为= ! 看起来像!=
      • 美丽。比isShowParameters ^=true 更易读,比三元版本更短。
      【解决方案4】:

      还有第三种选择:

      isShowParameters ^= true;
      

      或者更简洁:

      ParametersWindows.getInstance().setVisible(isShowParameters ^= true);
      

      【讨论】:

        猜你喜欢
        • 2023-03-30
        • 2011-06-07
        • 2012-11-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多