Java – 在主类中放入多少逻辑?

你通常把多少逻辑放在主类中? 主类中的逻辑应该是最小的,只是实例化其他专用类,并从那里运行所有任务?

如果您对此主题(或外部文章)有任何建议,我将不胜感激。

主类中的逻辑应该是最小的,只是实例化其他专用类,并从那里运行所有任务?

是。 理想情况下, main方法及其周围类只能用作启动程序的入口点。 仅仅存在周围的类只是Java程序组成方式的一个工件( 一切都必须在某个类中),并且除了main方法之外没有理由为什么它应该包含其他东西(但是肯定有原因)它不应该)。

当你将有趣的课程(形成实际课程的课程)分开时,你就会打开各种灵活性的大门。 也许其中一些类可以用在其他一些项目中。 也许有一天你会想要用更好的实现来替换它们中的一些。 也许你会找到一个更好的命令来实例化所有这些类 – 所以只需交换几行。 或者如何在并行线程中执行冗长的启动加载和实例化? 只需将其中的一些包装到合适的Executors中。 祝你好运1000+线主类。

这种灵活性对于除了100行基本示例,原型等之外的所有内容都很重要。 但鉴于即使是小工具也会增长,为什么不从一开始就正确地做到这一点?

对于小型工具,我很高兴拥有主类中的大部分或全部逻辑 – 通常可以使用较少的模型。 (对于非常小的工具,我承认我通常不会为unit testing而烦恼。特别是,在设计方面,如果你正在构建一个更大的应用程序中的组件,那么设计方面的好处就会少一些。)

对于大型应用程序,主要类别实际上只涉及设置和运行它们。 如果您使用的DI框架确实可以使用非常少的代码; 如果你没有使用dependency injection,那么主类通常充当“手动”dependency injection框架。

这不是一个关于课程是否是“主要阶级”的问题。 这是一个关于public static void main(String args[])方法中有多少逻辑的问题。 理想情况下,它应该包含非常少的逻辑。 它本质上应该构造一个或两个对象,然后在这些对象上调用方法。 其中一个对象可能是this() – 主类的一个实例,没关系。

你必须将main()方法放在某个地方 – 不需要创建一个特殊的类来保存该方法。

作为一般规则,尽量避免在静态方法中使用太多 – 静态方法不能被模拟用于测试。

主类应该是程序的入口点,因此应该相对较小。 但这完全取决于您的实际计划。 如果它长50行,那么为它创建两个文件可能有点过分。

例如,考虑默认的Swing应用程序框架桌面应用程序,因为它将由NetBeans模板生成,该模板简单而简短,其main()方法是启动它的单行:

 public class MyApp extends SingleFrameApplication { @Override protected void startup() { show(new MyView(this)); } @Override protected void configureWindow(java.awt.Window root) {} public static MyApp getApplication() { return Application.getInstance(MyApp.class); } public static void main(String[] args) { launch(MyApp.class, args); } }