Java类文件中main()方法的首选位置[关闭]

Posted

技术标签:

【中文标题】Java类文件中main()方法的首选位置[关闭]【英文标题】:Preferable location of main() method in Java class file [closed] 【发布时间】:2011-12-16 05:52:16 【问题描述】:

当谈到 java 类中的 order/sequence 方法时。 您希望/希望在哪里看到main() 方法?

在每个字段之前的顶部(强调用户它的存在和力量 他使用它) 在底部(让用户先查看字段,然后再查看主字段) 在 c-tor 之后 或...。

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

【问题讨论】:

为什么将 main() 保存在自己的文件中?如果您不想使用 OOP,请不要使用 java... 这是一种避免混合参数解析和任何类型的调用前的准备,如“job.doAll()”。 感谢大家的意见。我们的团队决定将 main 放在类的顶部,因为它是类功能的入口点。 【参考方案1】:

我总是把它放在最后,因为这就是他们在 C.“传统”中的做法。这可能不是一个很好的理由。 :-)

【讨论】:

Java 基于 C... 这是一个很好的理由。【参考方案2】:

这些只是我的想法:

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

问题是,在 Java 中,所有东西(除了原语)都是一个对象,所以 main() 必须在某个类的某个地方声明。这种静态方法可能执行的代码更关心的是设置程序以执行,并委托给我们的业务逻辑(实际做某事的对象)来运行应用程序。因此,它的关注点不同于我们类的其他部分(它定义了我们试图封装的一些数据和行为)。

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

至于文件本身的位置,我认为这并不重要——只要该文件中的代码显然与设置和运行程序有关。

【讨论】:

谢谢,我们确实保留 main() 是特殊的启动器类,但我们有一个项目包含可以由 main() 启动的数字 utils 类 - 这很方便。但是创建单独的/附加的类来配置和启动业务类将使类的数量增加一倍,并且会使代码变得不那么容易。因此,我们寻求折衷方案,将 main() 保留在同一个类中,但仍保持类易于阅读并理解如何与他一起工作。【参考方案3】:

Sun Microsystems 多年前发布了他们的Java 编程语言代码约定,许多组织都在不同程度上遵循它。

在this section 中,他们建议将方法放在文件末尾。如您所知,main 只是“另一种方法”,尽管它是类方法而不是实例方法。

虽然没有人强迫您遵循 Sun 的约定,但相对接近它们可能会有一点优势,因为您对它有一定程度的熟悉。大多数(如果不是全部)标准 JDK 库都将遵循它。

恕我直言,这是采用最后方法的一个很好的理由。关于 main 在方法中的位置,将其放在首位或放在最后会起作用。如果你发现它在某些方面“特别”,那么把它放在文件的最后。

【讨论】:

【参考方案4】:

我假设您没有系统地在您编写的每个类中都放置一个 main() 方法(在后一种情况下,您必须设想改为编写单元测试)。

只要你的类包含一个 main() 方法,你的应用程序的入口点也是如此,这个类不应该有除了应用程序初始化之外的任何行为。这种良好做法称为“关注点分离”:一个 class= 一个责任。

如果是这种情况,你的类中不应该有那么多方法。我个人总是按重要性对方法进行排序:最重要/最有用/最重要的方法高于所有其他方法,它们不会增加任何实际工作(setter 和 getter 对我来说就是这种类型)。

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

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

【讨论】:

以上是关于Java类文件中main()方法的首选位置[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Java打包jar和war文件(eclipse)

Java:为啥我不能在 main 之外调用这个方法? [关闭]

如果 main 方法在 java 文件的“非公共类”中怎么办?

关于eclipse中java项目管理中如何查找哪个类文件包含main

让这个代码在 main 方法中作为它自己的类独立存在是不是正确? [关闭]

java面试知识点