Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java—在主类中放入多少逻辑?_Java - Fatal编程技术网

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应用程序可以独立运行或作为小程序运行时,将小程序代码标记与主入口点一起是没有意义的,反之亦然。和其他类型的框架一样。是的,这是一个很好的例子!一旦入口点被除绝对必需的内容之外的任何内容所污染,就很难使程序适应不同的配置和环境?我的意思是,除了主要方法之外的方法。这是好的做法吗?