【发布时间】:2015-08-20 02:01:29
【问题描述】:
我正在开发一个 Android 项目。我搜索了高低,但我无法找到一个好的策略来拆分和打包我的代码。
我的问题是我有使用主类变量的内部类,我不知道如何将它们解耦。
我曾尝试创建辅助类,但要么我通过构造函数传递了很多变量,要么我暴露了我的主类,我都不想这样做。
我想将每个类的最大代码行数保持在 150 行。目前是 278 行。我正在寻找解耦这些的想法,特别是如何重组类以保留抽象 (private变量)。 Java 的最佳做法是什么?
例如,here 是我的主要课程之一,MainActivity,约 300 行。
【问题讨论】:
-
如果您不想通过构造函数传递“大量”变量(好的设计原则是向方法/构造函数传递不超过 5 个变量),只需将所有需要的变量封装在一个自己的类(参见 Value-Object 或 Transfer-Object 设计模式)。这样您就不必在 MainActivity 中公开任何变量,只需将一个值对象传递给重构的内部类的相应构造函数或方法。
-
两者几乎相似,我可能会传递 4 个变量。但是,新类还需要修改主类中的变量,这需要暴露,或者更多代码来检查这一点。理想情况下,我正在寻找
C++类型friend或类似的东西,所以我只能通过传递类对象MainActivity.this并完成。 -
您在想,“我怎样才能在结构上拆分它?”尝试改为思考“我如何在概念上将其拆分?”具有大量实用方法的巨大值类型类(例如,
String)完全可以。其他巨大的类可能有太多的责任。每个班级应该对另一件事做一件事。 -
@slartidan 谢谢。实际上是
new Bob().getSomething()。我正在写一个简单的例子,这样人们就不必阅读那么多行来获得要点。固定! -
@KevinKrumwiede 问题是概念上,
MainActivity正在抽象它应该抽象的东西,据我所知,坚持OOP。我相信从概念上拆分这些是没有意义的。我只是在寻找一种实现,它允许我在 结构 中实现它,它维护这些关系但保持代码可管理。
标签: java android inner-classes packaging object-oriented-analysis