[英]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.