我是否应该害怕将顶级课程移到内部课程,因为它会使一个类文件生成1.5k +行和50多种方法?
我正在将JavaFX用于宠物项目。我是一名新开发人员(大学一年级)。
我有不同的类来管理我的UI的不同部分。一个用于绘制游戏板,一对用于侧栏标签中的逻辑,一个用于菜单栏等。每个类的一个副本由主ViewController启动。
我发现这很容易管理。问题是我必须将一堆参数传递给每个(从scenebuilder创建的不同UI元素)。这听起来像是使用内部类的理由,对吧?一个"帮手"持有这些元素的对象会更好吗?添加新的变量UI元素变得很麻烦,这似乎是一个不好的迹象。
TLDR;如何在大型项目上管理大型ViewControllers?
答案 0 :(得分:1)
创建1.5k +行和50个方法长的任何类是面向对象的反模式,称为God object。
通常也避免必须传递大量参数是使用内部类的通常接受的原因。您可以在下面链接的页面中查看Oracles指南。 https://docs.oracle.com/javase/tutorial/java/javaOO/whentouse.html
通常,避免传递大量参数的最佳方法是基本上创建类来封装参数,然后传递这些类的实例。
答案 1 :(得分:0)
我不知道您正在处理的问题的具体细节,但从您的问题来看,您实际上似乎遇到了依赖注入问题。
你们所有的班级都相互依赖。例如,帮助程序可能依赖于不同的特定UI元素。现在,您手动连接这些依赖项(在实例化类时将所有依赖项作为构造函数params传递)。
在步骤中依赖注入。如果你在Android上,标准是Dagger,如果你在服务器上,大多数人仍然使用Guice。这里的基本思想是,不是手工连接每个类的所有依赖关系,而是创建一个构造函数并声明你的decencies,框架将完成剩下的工作。
例如:
class A {
@Inject public A(B b, C c) { ... }
}
class B {
@Inject public B() { ... }
}
class C {
@Inject public B() { ... }
}
当你向框架询问A
的新实例时,它会知道首先获取B和C并将它们传递给构造函数。