在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)
以类似方式评论代码块的做法是否被接受?
答案 0 :(得分:58)
我对此的看法是,这通常不是一个好习惯。与规则一样,可能有例外,但非常罕见。
这不是一个好习惯,因为
答案 1 :(得分:38)
这不是一个不好的做法,但它是一个致命的副作用糟糕的面向对象的编码实践!
此外,这违反了样式指南和"self-documenting code"的原则。你应该永远不要有那么多括号或方法足以让读者混淆支架位置,而是将该功能封装在另一个记录良好的方法中。
括号意味着循环或复杂的if-else逻辑链,良好的编程习惯是让方法完成一件事并做好,然后从这些较小的雾化方法构建程序。我会读巴特勒兰普森的开创性作品"Hints for Computer System Design"。它介绍了如何设计优秀软件的一些细节。
基本上,不要这样评论,因为:
答案 2 :(得分:1)
这取决于方法或功能的复杂程度。就像你有一些可以轻松阅读和理解的东西一样,用一个解释该部分已经结束的评论来结束每一行都不会有任何意义。这就是压痕和换行符的含义。但是,如果您的某些内容非常复杂且会影响代码的主要部分,那么您应该表示该代码的结束位置以及该部分的作用。
答案 3 :(得分:1)
我只会在代码中有一个相互之间有很多结束括号的地方时执行此操作。但不是每个支架。主要是我似乎将它用于循环,以便您可以轻松地查看重复的代码块。
看起来像这样:
// ... file.Close(); } } } } } }
然后添加一些评论会有所帮助:
// ... file.Close(); } } } }//for: each file } }
答案 4 :(得分:0)
如果存在相同类型的嵌套块,则可能会造成混淆而不是表现良好。假设您有4或5个嵌套if语句(请记住,这只是一个示例来说明情况,无论“哦你应该分开那些”或“提出方法”建议)在这种情况下你将有4或5不同的//如果排序则结束。过了一会儿,它让你混淆哪个“结束如果”是哪个声明,让你花费额外的努力来无意识地看透实际的代码/陈述,因为它并不像你的例子一样干净/简短。
答案 5 :(得分:0)
IMO,它没有多大帮助。循环或if语句中的代码不应该太大。 如果循环中有500行,那会有所帮助。