大括号/块末尾的Java注释

时间:2012-10-09 02:27:10

标签: java comments curly-braces

在Java编程语言中,为一个带有注释的代码块结束括号是否是公认的做法,该注释简要说明了括号关闭的代码块?我个人认为它们是无用的评论,这些评论会破坏代码的可读性,但也许我可能是错的。例如:

public void myMethod(int foo) {    
    // some code
    if (foo == 2) {
        for (int i = 0; i < myMax; i++) {
            while (true) {
                // some more code
            } // end while
        } // end for
    } // end if
} // end myMethod(int)

以类似方式评论代码块的做法是否被接受?

6 个答案:

答案 0 :(得分:58)

我对此的看法是,这通常不是一个好习惯。与规则一样,可能有例外,但非常罕见。

这不是一个好习惯,因为

  1. 当您将光标放在结束时,现代编辑器会突出显示左括号,反之亦然。
  2. 最重要的是:如果有可能看不到条款的开头,则意味着该方法很大(超过半页),这是一种不好的做法。
  3. 它会给代码增加噪音,这会使习惯于更常规的Java编码风格的读者感到困惑。
  4. 合并LordScree-Joachim Sauer评论:这些评论将会 要保持颈部疼痛。所以很可能它不会被维护,而且信息通常会与现实不同步。

答案 1 :(得分:38)

这不是一个不好的做法,但它是一个致命的副作用糟糕的面向对象的编码实践!

此外,这违反了样式指南和"self-documenting code"的原则。你应该永远不要有那么多括号或方法足以让读者混淆支架位置,而是将该功能封装在另一个记录良好的方法中。

括号意味着循环或复杂的if-else逻辑链,良好的编程习惯是让方法完成一件事并做好,然后从这些较小的雾化方法构建程序。我会读巴特勒兰普森的开创性作品"Hints for Computer System Design"。它介绍了如何设计优秀软件的一些细节。

基本上,不要这样评论,因为:

  1. 违反了风格指南
  2. 它显示了糟糕的面向对象编程 - 雾化您的功能!
  3. 编码实践的致命副作用与创建Java的基本概念背道而驰 - 封装,特别是信息隐藏
  4. 它违反了自我记录代码的概念
  5. 其他程序员会取笑你。

答案 2 :(得分:1)

这取决于方法或功能的复杂程度。就像你有一些可以轻松阅读和理解的东西一样,用一个解释该部分已经结束的评论来结束每一行都不会有任何意义。这就是压痕和换行符的含义。但是,如果您的某些内容非常复杂且会影响代码的主要部分,那么您应该表示该代码的结束位置以及该部分的作用。

答案 3 :(得分:1)

我只会在代码中有一个相互之间有很多结束括号的地方时执行此操作。但不是每个支架。主要是我似乎将它用于循环,以便您可以轻松地查看重复的代码块。

看起来像这样:

            // ...
            file.Close();
          }
        }
      }
    }
  }
}

然后添加一些评论会有所帮助:

            // ...
            file.Close();
          }
        }
      }
    }//for: each file
  }
}

答案 4 :(得分:0)

如果存在相同类型的嵌套块,则可能会造成混淆而不是表现良好。假设您有4或5个嵌套if语句(请记住,这只是一个示例来说明情况,无论“哦你应该分开那些”或“提出方法”建议)在这种情况下你将有4或5不同的//如果排序则结束。过了一会儿,它让你混淆哪个“结束如果”是哪个声明,让你花费额外的努力来无意识地看透实际的代码/陈述,因为它并不像你的例子一样干净/简短。

答案 5 :(得分:0)

IMO,它没有多大帮助。循环或if语句中的代码不应该太大。 如果循环中有500行,那会有所帮助。