问题 建议的Java注释顺序?


对于大量使用Java注释的项目,是否对注释顺序有任何建议?从而统一团队中的代码风格。


3906
2018-04-12 16:08


起源

按字母顺序排列,或以反向十六进制顺序=) - somid3


答案:


我要说没有。我可以证明这是错误的。

我的理由是有数百个带注释的项目,除了Java中的注释,以及我们的IDE(特别是Eclipse,但我确信其他人也有它们)。

因此,所有这些图书馆都有可能与“谁在最高层”竞争,我怀疑他们是否同意一个标准。

我鼓励你的团队坐下来决定什么对你们最好。

我会考虑的因素:

  1. 哪个annotatiosn最重要?他们应该在顶部附近。
  2. 哪些注释最有可能表明潜在的错误?他们应该在顶部附近。
  3. 类中的每个方法都可能有哪些注释?它们应该接近底部。

7
2018-04-12 16:14



好建议。我已经非常隐含了这三条规则。 - Xiè Jìléi
我会个人补充一下 0. Annotation qualifier comes first before the qualified annotation.  所以@Lazy会在@Service之前。你同意吗? - Xiè Jìléi
我不喜欢在限定注释之前放置限定符。读“懒惰”时,这是一个什么样的懒惰?服务告诉我我正在使用服务,懒惰然后使服务更具体。是的,英语在名词之前使用形容词,但面向对象编程(Java)将对象放在方法和字段之前。注释“下面的东西”(注释的限定符)可能被视为注释之下的元素,而不是之前的元素。就像我在回答中说的那样,获得团队协议。 - Edwin Buck
得把它交给埃德温那里。我喜欢他的逻辑,他的最后一句话比我们任何一篇文章中的其他内容都重要(除非我们在帖子中说出来。)你能做的最重要的事情就是从你的团队那里获得意见。 Edwin和我不必在您的代码库中工作。他们是这样。 - corsiKa


如果你必须按顺序强制执行命令?

如果没有关于您正在使用的注释的某种知识,很难建议合理的排序。也许更好的订购会更适合您和您的团队;如果是这样,如果您记录了约定的订单,那么唯一剩下的就是按照团队同意的顺序进行验证。

在与整个团队交谈之后,您可能会发现您根本不需要订购它们。


3
2018-04-12 16:11





好问题。这不是一门精确的科学,但我个人试着将注释从顶部的“宽范围”安排到底部的“窄范围”。这是一个例子:

@RadioDomain
@Entity
@Table(name = "receiver")
@ReceiverConstraintCheck
@SuppressWarnings("PMD.ShortVariable")
public class Receiver {
    // ...
}

1
2018-01-16 13:33