Java 这两个例子中哪一个是更好的代码设计?

Java 这两个例子中哪一个是更好的代码设计?,java,swing,coding-style,Java,Swing,Coding Style,示例#1 public void mouseClicked(MouseEvent e) { if (isShowParameters) isShowParameters = false; else isShowParameters = true; ParametersWindows.getInstance().setVisible(isShowParameters); } 示例#2 public void mouseClicked(Mo

示例#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=!Isshow参数因为它比较短。较短的程序更容易理解和维护。但是你那一大堆无与伦比的右括号是怎么回事?这似乎是一种糟糕的编码风格

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

更新


只有在不需要更新字段本身时才有效。

还有第三个选项:

isShowParameters ^= true;
或者更紧凑地说:

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

在这两种情况下,缩进都很糟糕。应该是
isShowParameters^=true这个问题不清楚。您是在问如何使每个示例更高效,还是两个示例中的哪一个更适合代码设计?还是
ParametersWindows.getInstance().setVisible(isShowParameters=(isShowParameters==true)?false:true
甚至
参数swindows.getInstance().setVisible(isShowParameters=(isShowParameters)?false:true
@Petar,该构造在like
b[i++]^=true的情况下也很有用
b[calcIndex(p)+base]^=true否则需要将索引保留在临时变量中。这不起作用b/c它不会更改字段
isShowParameters
字段值不会更改。在第二次按下的形式消失了。哦,我明白了。假设它在其他地方使用,那么我将使用选项#2。您可以始终执行
参数swindows.getInstance().setVisible(isShowParameters=!isShowParameters),尽管这可能会让人困惑,因为
=看起来像
=漂亮。比
isShowParameters^=true更可读,比三元版本更短。