大括号/块末尾的 Java 注释

2022-09-01 08:01:35

在 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)

以类似方式注释代码块的做法是否是一种公认的做法?


答案 1

我的看法是,作为一项规则,这不是一个好的做法。与规则一样,可能会有例外,但非常罕见。

这不是一个好的做法,因为

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

答案 2

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

此外,这违反了样式指南和“自我记录代码”的原则。您永远不应该有那么多的括号或一个足够长的方法,以使读者对括号放置感到困惑,而是将该功能封装在另一个有良好文档记录的方法中。

括号意味着循环或复杂的if-else逻辑链,好的编程实践是让一个方法只做一件事并做得很好,然后从这些较小的原子化方法构建你的程序。我会读巴特勒·兰普森(Butler Lampson)的开创性文章《计算机系统设计提示》(Hints for Computer System Design)。它详细介绍了如何设计好的软件。

所以从本质上讲,不要这样评论,因为:

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

推荐