Java—在主类中放入多少逻辑?
你通常在主类中放多少逻辑?主类中的逻辑是否应该是最少的,只实例化其他专门类,并从中运行所有任务Java—在主类中放入多少逻辑?,java,Java,你通常在主类中放多少逻辑?主类中的逻辑是否应该是最少的,只实例化其他专门类,并从中运行所有任务 如果您对这个主题(或外部文章)有任何建议,我将不胜感激。这不是一个类是否是“主类”的问题。问题在于publicstaticvoidmain(stringargs[])方法中有多少逻辑。理想情况下,它应该包含很少的逻辑。它本质上应该构造一个或两个对象,然后对这些对象调用方法。其中一个对象可能是this()——一个主类的实例,这没关系 您必须将main()方法放在某个地方—不需要创建一个特殊的类来保存该方
如果您对这个主题(或外部文章)有任何建议,我将不胜感激。这不是一个类是否是“主类”的问题。问题在于
publicstaticvoidmain(stringargs[])
方法中有多少逻辑。理想情况下,它应该包含很少的逻辑。它本质上应该构造一个或两个对象,然后对这些对象调用方法。其中一个对象可能是this()——一个主类的实例,这没关系
您必须将main()方法放在某个地方—不需要创建一个特殊的类来保存该方法
作为一般规则,尽量避免在静态方法中包含太多内容-静态方法在测试中不能被模仿。对于小型工具,我很高兴在主类中包含大部分或全部逻辑-通常很少使用模型。(对于非常小的工具,我承认我通常不关心单元测试。特别是,如果你正在构建一个更大的应用程序中的组件,那么在设计方面的好处就更少了。) 对于大型应用程序,主类实际上只是负责设置并启动它们。如果您使用的是一个DI框架,它实际上可能只有很少的代码;如果不使用依赖项注入,那么主类通常充当“手动”依赖项注入框架 主类中的逻辑是否应该是最少的,只实例化其他专门类,并从中运行所有任务 对
main
方法及其周围的类理想情况下只能用作启动程序的入口点。周围类的存在只是Java程序组成方式的一个产物(所有东西都必须在某个类中),除了main
方法之外,没有理由它还应该包含其他东西(但肯定有理由不应该)
当您将感兴趣的类(构成实际程序的类)分开时,您就为各种灵活性打开了大门。也许其中一些类可以用于其他一些项目。也许有一天你会想用更好的实现来取代其中的一些。也许您会发现实例化所有这些类的顺序更好——所以只需交换几行即可。或者在并行线程中执行冗长的启动加载和实例化如何?把其中一些交给合适的遗嘱执行人就行了。祝你在1000+行主类中尝试此操作时好运
这种灵活性对一切都很重要,除了100行的基本示例、原型等。但是,考虑到即使是小型工具也会不断增长,为什么不从一开始就正确地使用它呢?主类应该是程序的入口点,因此应该相对较小。然而,这一切都取决于你的实际计划。如果它有50行长,那么为它创建两个文件可能会有些过分
作为一个例子,考虑默认的Swing应用程序框架桌面应用程序,因为它将由NETBeS模板生成,它是简单和简短的,其<代码>主()>代码>方法是启动它的单行:
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);
}
}
这不是一个真正值得回答的问题,我只是想补充一下,我发现只有
main()
方法(或小助手方法)才应该调用System.exit()
,这是一个有用的实践。这是你可能会想到的一个逻辑。我曾经被告知,每个main()方法应该只有两行,一行用于实例化主对象,另一行用于调用封装到主类的run方法。我也被告知过同样的事情,在学校和工作中。+1用于分别处理小程序和大程序的编程。例如,当您有一个GUI应用程序可以独立运行或作为小程序运行时,将小程序代码标记与主入口点一起是没有意义的,反之亦然。和其他类型的框架一样。是的,这是一个很好的例子!一旦入口点被除绝对必需的内容之外的任何内容所污染,就很难使程序适应不同的配置和环境?我的意思是,除了主要方法之外的方法。这是好的做法吗?