繁体   English   中英

内部类与顶级类与指针(多少行太多)?

[英]Inner class vs Top Level class with Pointer (How many lines are too many)?

我应该害怕将顶级类移到内部类,因为这会使一个类文件长1.5k +行和50+个方法吗?

我正在将JavaFX用于宠物项目。 我是一名新开发人员(大学新生)。

我有不同的类来管理UI的不同部分。 一个用于绘制游戏板,一对用于在侧栏选项卡中逻辑,一个用于菜单栏等。每个类的一个副本由主ViewController启动。

我发现这很容易管理。 问题是我必须向每个参数传递一堆参数(从scenebuilder创建的不同UI元素)。 这听起来像是使用内部类的原因,对吗? 包含这些元素的“辅助”对象会更好吗? 添加新的变量UI元素变得很麻烦,这似乎是一个不好的信号。

TLDR; 如何在大型项目上管理大型ViewController?

创建1.5k +行和50个方法长的任何类都是面向对象的反模式,称为God对象

通常,也避免使用大量参数是使用内部类的普遍接受的理由。 您可以在下面链接的页面中查看Oracle指南。 https://docs.oracle.com/javase/tutorial/java/javaOO/whentouse.html

通常,避免必须传递大量参数的最佳方法是基本上创建一些类来封装参数,并改为传递这些类的实例。

我不知道您正在处理的问题的具体信息,但是从您的问题来看,您似乎实际上正在解决依赖项注入问题。

您所有的班级都相互依赖。 例如,助手可能依赖于不同的特定UI元素。 现在,您正在手工连接那些依赖项(实例化类时,将所有依赖项作为构造函数参数传递)。

分步进行依赖注入。 如果您使用的是Android,则标准为Dagger;如果您使用的是服务器,则大多数人仍会使用Guice。 这里的基本思想是,您无需手工将每个类的所有依赖关系连接在一起,而是创建一个构造函数并声明您的decency,其余的将由框架来完成。

例如:

class A {
   @Inject public A(B b, C c) { ... }
}

class B {
   @Inject public B() { ... }
}

class C {
   @Inject public B() { ... }
}

当您向框架询问A的新实例时,它将知道先获取B和C,然后将它们传递给构造函数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM