Java类文件中main()方法的首选位置

14

当涉及到Java类中的顺序/序列方法时,您希望在哪里看到main()方法?

  • 在每个字段之前的顶部(强调用户其存在并强制使用它)
  • 在底部(让用户先看到字段,然后发现主要内容)
  • 在构造函数之后
    或... .

请分享您的想法,这是一种风格/哲学上的问题。 请不要建议将main()保留在单独的文件中。


2
为什么不把main()函数放在自己的文件中呢?如果你不想使用面向对象编程,那就不要用Java... - user684934
这种风格可以避免在调用时混淆参数解析和任何准备工作,例如“job.doAll()”。 - Roman Ivanov
感谢大家的意见。我们的团队决定将main函数放在类的顶部,因为它是类功能的入口点。 - Roman Ivanov
4个回答

8

这只是我的一些想法:

main()是一个与对象实例无关的静态方法。我们知道它作为入口点而存在,使得我们的程序/类可执行。

问题是,在Java中,除了原始类型(primitives)以外,一切都是对象,因此必须在某个类中声明main()。这样一个静态方法可能执行的代码更多地涉及设置程序以便执行,并委托给我们的业务逻辑(实际执行任务的对象)来运行应用程序。因此,它的关注点与我们类的其余部分不同(定义我们试图封装的一些数据和行为)。

main()并不真正属于我们日常类的数据和行为,因为我怀疑每个类都需要自己可执行。main()的关注点是运行我们的程序。因此,它应该远离我们的业务对象,在项目中关注应用程序启动/执行的模块中声明。所以,正如你可能猜到的那样,我正在提出你说过不要建议的建议 - 在尽可能的情况下将main与您的类和逻辑隔离,并仅在应用程序入口点的上下文中声明它。

至于文件内的位置,我认为它并不重要 - 只要显然该文件中的代码涉及设置和运行程序即可。


谢谢,我们确实保留了main()作为特殊的启动器类,但我们有一个包含数字工具类的项目,可以通过main()启动 - 这很方便。但是创建一个单独/附加的类来配置和启动业务类将使类的数量增加一倍,并使代码变得不那么容易。因此,我们正在寻找妥协方案,以保持main()在同一类中,但仍然使类易于阅读和理解如何与它一起工作。 - Roman Ivanov

7

我一直把它放在最后,因为这是C语言的做法,“传统”之所以不一定是个好理由。 :-)


3
Java基于C语言...这是一个很好的理由。 - Bohemian

5
Sun Microsystems在很多年前发布了他们的Java编程语言代码规范,许多组织在不同程度上遵循它。在这个部分中,他们建议将方法放在文件的末尾。正如你所知,main只是“另一个方法”,虽然是类方法而不是实例方法。虽然没有人强迫你遵循Sun的规范,但保持相对接近它可能会有一些优势,因为它有一定的熟悉度。大多数(如果不是全部)标准JDK库都会遵循它。这是采用方法最后的方法的一个好理由。关于main在方法中的位置,将其放在第一或最后都可以。如果你觉得它在某种程度上很“特殊”,那么就将它放在文件的最后。

1

我假设你并不会在你写的每个类中都系统地放置一个main()方法(在这种情况下,你需要考虑编写单元测试来代替)。

只要你的类包含一个main()方法,因此是应用程序的入口点,这个类就不应该有任何行为,除了应用程序初始化。这个好习惯被称为“关注点分离”:一个类=一个职责。

如果是这种情况,你的类中不应该有太多的方法。我个人总是按重要性对方法进行排序:最重要/有用/核心的方法位于所有其他方法之上,这些方法并没有添加任何真正的工作(对我来说,设置器和获取器属于这种类型)。

这样,读者首先可以访问最重要的信息。

当然,使用我推荐的Java约定进行编码意味着你首先声明类字段,然后再声明方法。


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