java - 为什么 Netbeans 建议我在我的 Java 代码中“翻转二进制运算符的操作数”
问题描述
@Override
public void keyPressed(KeyEvent e) {
if ((e.getKeyCode() == KeyEvent.VK_ENTER) && e.isShiftDown()) {
msgSend.append("\n");
} else if (e.getKeyCode() == KeyEvent.VK_ENTER) {
sendMessage();
}
else if ((e.getKeyCode() == KeyEvent.VK_X) && e.isControlDown()) {
System.exit(0);
}
}
解决方案
这可能是因为您这里的逻辑不是最佳的。我认为这会更好:
if(e.getKeyCode() == KeyEvent.VK_ENTER) {
e.isShiftDown() ? msgSend.append("/n") : sendMessage();
} else if(...) {
...
}
另外,如果这最终会成为 if-else if 的一大块,我会改用 switch 语句。
编辑:只是为了添加更多上下文。如果您既要通过按键进行过滤,又要在按下某个键时按下其他键(如 shift、ctrl 等),您需要根据类型分隔 if 或 case。即,您希望每个块首先通过按键过滤,然后在块内有块来检查 shift 和 ctrl 按下。这不是一个巨大的 else-if 块,它涵盖了每种情况,例如 enter press、enter press + shift、enter press + ctrl。
伪代码:
if(enter pressed) {
if(control is down) {}
if(shift is down) {}
} else if(space bar pressed) {
if(control is down) {}
...
}
而不是:
if(enter pressed and control down) {}
if(enter pressed and shift down) {}
if(enter pressed) {}
推荐阅读
- python - 基于 Python 中的逻辑表达式结果打开 Tkinter 框架
- javascript - 使用 ng-model 将数据插入数组
- ios - 来自陀螺仪的数据在 Apple Watch 上不起作用
- matlab - 使用confusionmat函数生成的混淆矩阵的大小不对,为什么?
- amazon-web-services - 处理来自 Amazon SQS 死信队列的消息
- r - 仅给出最终样本大小的 R 多阶段抽样
- testing - Golang 测试覆盖与黑盒 _test 覆盖
- python - 将时间戳舍入到最接近的 30 秒
- java - couchbase 插入和查询延迟
- php - 在 000webhost 中找不到 Laravel 路由