代码风格与注释

12
我无法决定选择哪一个:
@MyAnnotation(param1="paramval")
public void foo(){}
并且
@MyAnnotation(param1="paramval") public void foo(){}

有没有一种最佳实践正在出现?

5个回答

22

我们使用第一种情况。

在某些情况下,注释无法适应一行。

  • 在这种情况下,注释会在我们的项目中不断增加,责任重重。对于完全不同的问题具有注释的同一行变得杂乱无章。
  • 此外,某些注释可能变得非常大,并且可以成为它们自己的多行注释(我想到子类中的Hibernate映射重新定义)。

1
我赞同这个观点。此外,我建议按照某种固定顺序(例如按字母顺序排序)应用注释。 - yawn
如果您有10个注释参数,并且它们向右滚动超出了您的首选行长度,该怎么办?您能像方法参数一样将它们多行吗?还是不行?我认为访问此问题的用户会感到疑惑。 - djangofan

3

注解可以带有参数,如果你把注解、它的参数和方法头都放在一行上,那么它会变得非常长。

@MyAnnotation(name = "This is the name", version = "1.0")
public void foo () {
    // ...
}

可以像方法参数一样将注释参数放在多行上吗?还是那会破坏注释? - djangofan
是的,您可以将注释参数分布在多行上(尝试一下)。 - Jesper

3

我认为这并没有硬性规定。根据情况,你可以选择任意一种方式。

例如,如果你的类有许多短方法,有时将它们压缩到一行上以减少代码噪声是很理想的:

@MyAnnotation public int foo1(){ return 1; }
@MyAnnotation public int foo2(){ return 2; }
@MyAnnotation public int foo3(){ return 3; }
etc etc

同样地,如果您有一个带有复杂注释的更实质性的方法,扩展形式更加理想。

1

通常我会使用第一种情况。

然而,在JUnit中有一个特殊的情况,我会将注释放在同一行上,那就是@Test注释。这个注释通常很短,不需要任何参数,并且通常出现在人类读者下意识地期望它存在的上下文中。当您在测试类中注释public void无参方法时,我认为将注释简化到同一行比将其放在单独的一行上更好(即更少分散注意力,可以在屏幕上看到更多代码)。

在一般情况下,您确实希望您的注释突出显示,因为它们通常与开发人员从未注释的方法所期望的不同。例如,如果我在@Test注释中设置了超时时间,我会将其放在前一行,以便它不会在样板文件中丢失。


1

嗯,我们甚至不能同意在哪里放置 { :-(

我的偏好是前者,特别是因为可能会有多个注释。

我熟悉的例子使用这种风格。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接