有没有任何 Java 方法的排序约定?

我有一个很大的类(大约40个方法) ,它是我将作为课程作业提交的包的一部分。目前,这些方法在公用事业/私有事业等方面非常混乱,我想以一种合理的方式对它们进行排序。有什么标准的方法吗?例如,通常字段在方法之前列出,构造函数在其他方法之前列出,getter/setter 最后列出; 剩下的方法呢?

132711 次浏览

一个类中有40个方法有点多。

将一些功能移动到其他适当命名的类中是否有意义?那就更容易理解了。

当你有更少的时候,以一种自然的阅读顺序列出它们就容易多了。一个常见的范例是按照你需要的顺序列出你需要的 之前或者 之后

这通常意味着 main()位于顶部或底部。

有些约定首先列出所有的公共方法,然后列出所有的私有方法——这意味着很容易将 API 从实现中分离出来,即使不涉及接口,如果您明白我的意思的话。

另一个想法是将相关的方法分组在一起——这样可以更容易地发现接缝,从而可以将现有的大型类分成几个更小、更有针对性的类。

你在用 Eclipse 吗?如果是这样,我将坚持使用默认的成员排序顺序,因为无论谁读取您的代码,都可能最熟悉这种顺序(尽管它不是我最喜欢的排序顺序)

我的“约定”: 静态在实例之前,公共在私有之前,构造函数在方法之前,但是主方法在底部(如果存在的话)。

不知道是否有普遍接受的标准,但我自己的喜好是;

  • 首先是构造函数
  • 接下来,如果有一个 main 方法,总是在其他静态方法之前
  • 接下来是非静态方法,通常是按照方法的重要性顺序,然后是它调用的任何方法。这意味着调用其他类方法的公共方法出现在顶部,而不调用其他方法的私有方法通常出现在底部
  • 标准方法如 toStringequalshashcode接下来
  • Getter 和 setter 在类的底部保留了一个特殊的位置

更精确地链接到“代码约定”: “类和接口声明”

  1. 类(静态)变量: 首先是公共类变量,然后是 保护,然后是私人。

  2. 实例变量: 首先是公共的,然后是受保护的,然后是私有的。

  3. 建筑工人

  4. 方法: 这些方法应该按功能分组 而不是通过范围或可访问性。例如,私有类方法 可以位于两个公共实例方法之间 更容易阅读和理解代码。

资料来源: https://www.oracle.com/java/technologies/javase/codeconventions-fileorganization.html

此外,Eclipse 还提供了对类成员进行排序的可能性,如果您出于某种原因将它们混淆了:

打开你的类文件,在主菜单中选择“源”,然后选择“排序成员”。

从这里拍摄: Eclipse 中的排序方法