java - 搜索并替换没有大括号的 if 语句以包含大括号

标签 java intellij-idea

我最近一直在使用声纳进行代码分析。当我进行彻底的违规向下钻取时,我发现许多 java 文件的 if 语句定义时没有用大括号(数以千计的地方)。是否有一种简单的方法来替换或添加大括号到 if 语句,或者我可以执行哪些步骤来完成此任务而无需在每个文件中手动执行。

我目前正在使用 intelliJ。

最佳答案

Is there a simple way to replace or add braces to if statements or what are the steps that I can perform to achieve this task without doing it manually in each of the files.

我不知道是否有工具可以自动执行此操作。 (可能有……)但假设存在这样的工具,我不认为这是正确的方法。

退后一步,考虑一下为什么代码分析将此报告为问题。很多人(比如@pst 和我)认为大括号应该始终存在,尽管各种风格指南并不坚持这一点。这是有充分理由的……除了“它看起来很丑”。考虑这些示例代码片段:

if (i == 1) 
    i++;
    doSomething();

while (i < 1)
    i++;
    doSomething();

如果您不仔细阅读这些内容,您的眼睛会误以为 doSomething(); 是有条件地调用的……由于缩进不正确。它发生了。

(旁白:因为误读代码而将某人标记为“无能”是没有帮助的。如果你正拼命修复一个阻碍展示的错误并且你已经连续工作了 14 个小时,那么你很可能会错过这个那种事情。并不是因为你无能。一旦你遇到过几次这种情况,教训就会深入......)

好的,现在假设您运行一个自动工具来添加大括号。你会得到的是:

 if (i == 1) {
    i++;
 }
    doSomething();

 while (i < 1) {
    i++;
 }
    doSomething();

和原来的代码意思完全一样。 但是 ...如果原始代码实际上是一个错误怎么办?如果程序员打算 doSomething() 调用是有条件的怎么办?

简而言之,通过自动添加大括号,我们掩盖了最初程序员的意图,并使这些错误更难追踪。


底线 - 我认为谨慎手动检查这些事件中的每一个……而不是自动“修复”它们。事实上,我认为如果您没有时间或耐心手动检查它们,最好不要管代码。最好关闭警告... IMO。

关于java - 搜索并替换没有大括号的 if 语句以包含大括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12046915/

相关文章:

java - Android Studio 在调试器中将 byte[] 视为字符串

java - 语音识别API : How to get the voice features (MEL Coefficients)

java - 使用多个类时输出奇怪

java - 如何为 android 创建 vector 可绘制对象?

Java Apache POI 和 JDBC : Smart way to fetch huge amount of data into Excel

java - Spring 批处理 : Parsing a CSV file with quoteCharacter

java - 重命名 Intellij 中多个子类中使用的变量

android - IntelliJ for Android Gradle 项目中的依赖项

spring-boot - IntelliJ 不获取自己的 spring 配置元数据

intellij-idea - 如何在 Intellij 中创建命名代码块?