【问题标题】:Java - how much logic to put in the main class?Java - 在主类中放置多少逻辑?
【发布时间】:2010-02-20 12:10:38
【问题描述】:

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

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

【问题讨论】:

  • 这真的不值得回答,只是想补充一点,我发现它是一种有用的做法,只有 main() 方法(或小型辅助方法)应该调用 @987654322 @。所以这是你可能期望的一种逻辑。

标签: java


【解决方案1】:

对于小型工具,我很高兴在主类中拥有大部分或全部逻辑 - 可使用的模型往往较少。 (对于非常小的工具,我承认我通常不会费心进行单元测试。特别是,在设计方面的好处比你正在构建的东西要少更大的应用程序中的组件。)

对于大型应用程序,主要课程实际上只涉及设置和启动它们。如果您使用的 DI 框架确实可以是非常少的代码;如果您不使用依赖注入,则主类通常充当“手动”依赖注入框架。

【讨论】:

  • +1 用于处理小型编程与大型编程。
【解决方案2】:

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

是的。 main 方法及其周边类在理想情况下应仅用作启动程序的入口点。周围类的存在只是 Java 程序组合方式的产物(所有东西都必须在某个类中),除了@987654322 之外,它没有理由包含其他东西@ 方法(但肯定有不应该这样做的原因)。

当您将有趣的类(构成实际程序的类)分开时,您就为各种灵活性打开了大门。也许其中一些类可以在其他一些项目中使用。也许有一天你会想用更好的实现来替换其中的一些。也许你会找到一个更好的顺序来实例化所有这些类——所以只需交换几行。或者如何在并行线程中执行冗长的启动加载和实例化?只需将其中一些包装到合适的 Executor 即可。祝你在 1000 多行主类中尝试这个。

这种灵活性对所有事情都很重要,除了 100 行基本示例、原型等。但考虑到即使是小型工具也趋于增长,为什么不从一开始就正确地做到这一点呢?

【讨论】:

  • 如果你有一个可以独立运行或作为小程序运行的 GUI 应用程序,那么将小程序代码与主入口点一起标记是没有意义的,反之亦然.与任何其他类型的框架相同。
  • 是的,这是一个很好的例子!一旦入口点被除了绝对需要的东西之外的任何东西污染了,让程序适应不同的配置和环境就变得很尴尬。
  • 在 Main.java 类中包含方法怎么样?我的意思是,除了主要方法之外的方法。这是好习惯吗?
【解决方案3】:

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

您必须将 main() 方法放在某个地方 - 无需创建一个特殊的类来保存该方法。

作为一般规则,尽量避免在静态方法中使用过多 - 不能模拟静态方法进行测试。

【讨论】:

  • 曾经有人告诉我,每个 main() 方法应该只有两行,一行用于实例化 Main 对象,另一行用于调用封装到主类的 run 方法。
  • 在学校和工作中也有人告诉过我同样的事情。
【解决方案4】:

主类应该是程序的入口点,因此应该相对较小。但是,这一切都取决于您的实际程序。如果它有 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);
    }
}

【讨论】:

    猜你喜欢
    • 2011-08-02
    • 1970-01-01
    • 2023-03-15
    • 2011-01-30
    • 1970-01-01
    • 2011-09-08
    • 2011-11-21
    • 2012-09-12
    • 1970-01-01
    相关资源
    最近更新 更多