JetBrains IDE问题——在if/else/for/while/do语句中只有一行没加大括号,IDEA显示为错误
一、问题
1.问题场景
为了省事或者维护旧代码
,在if/else/for/while/do语句中只有一行没加大括号,有过多并不影响运行的错误,但又不敢批量修改,怕出现bug
2.问题描述
在if/else/for/while/do语句中只有一行没加大括号,IDEA显示为错误
以if为例:
3.本解决方案优势
亲测可用,一劳永逸
可随时取消和启用
二、原因分析
根据代码逻辑规范,此类情况是一种错误容易出现问题,如:
例子1
public static void main(String[] args) {
int a = 0;
int b = 0;
if (b != 0)
a = 1;
b = 1;
System.out.println("a:" + a);
System.out.println("b:" + b);
}
//实际输出为
a:0
b:1
预计的情况是if中的
a = 1;
b = 1;
都不会执行,因为if要求b!=0
的时候才会执行
但实际上,因为if不加大括号的作用域只有一条语句,而;
就是一条语句的结束,所以
b = 1;
实际上是不受if影响的,只有a=1是受if影响的,所以a=1不会执行而b=1会执行
这个是新手常犯的错误,if忘记加括号,因为只要缩进了就会执行
例子2
public static void main(String[] args) {
if (false)
int a = 0;
}
// 编译报错,此处不允许使用变量声明
java规定在此类情况下都不允许使用变量声明,原因我觉得是这样就算可以,也没有意义,变量刚初始化,没有使用就要销毁,这样只是在浪费资源,毫无意义
三、解决方案:
编辑器检查配置
四、具体流程
1.打开设置(Ctr+Alt+s)
2.依次打开编辑器->检查(editor->inspections)
,输入大括号
进行搜索![在这里插入图片描述](https://img-blog.csdnimg.cn/ba10154e40ce47ee859c845b3dba87ca.png)
3.将在if/else/for/while/do语句中必须使用大括号,即使只有一行代码,避免使用下面的形式:if (condition) statements;
的检查的严重等级改为警告(Warning)
(如有其他检查涉及,也需修改)
五、总结和发现
推荐在写代码的时候遵循代码规范,在面对旧代码的时候,最好也不进行修改,把错误提示改成警告就好
- 浪费时间解决小问题的意义,不只是
以后再遇到同样的问题时烦躁,坏了自己的心情
,更是自己乐于去解决问题,学习新知识的态度!
- 用更多的时间在解决问题后分享出来,不只是
加深对于解决问题过程的理解
,更是让别人在遇到同样的问题的时候,能够少浪费一点时间
,不重复造轮子! - 通过学习解决问题,是一个
终身学习的程序猿
,所必须的素养