【问题标题】:How Can I Organize and Reduce The Amount of Classes in My Application如何组织和减少申请中的课程数量
【发布时间】:2019-05-28 21:05:18
【问题描述】:

我想这更像是一个设计模式问题而不是编码问题。所以我们开始......我有一个包含许多类和活动的android应用程序。我根据它们的功能将类分组在目录内,例如:AsyncTask 目录中的 DownloadTask、ScanTask。然后我将所有活动都放在活动目录中,依此类推。但我注意到我的很多代码都是重复的。例如,我有 3 个活动 PingActivity、NetstatActivity、WhoisActivity,从代码的角度来看,它们基本上看起来完全一样。唯一的区别是他们使用的命令,例如:PingActivity 的 ping 主机,NetstatActivity 的 netstat -ant 等等。它们都从看起来非常相似的 xml 布局中实例化视图,因为我只有 EditText、按钮和 TextView。并且类调用 AsyncTask 以执行与主线程分开的后台进程。 WhoisActivity 除外,它使用 rest api 服务来查询域名。所以我的问题是如何简化我的设计?我可以使用一个类并根据用户选择的菜单选项传递命令或 api 吗?我怎样才能做到这一点?谢谢

【问题讨论】:

  • 我建议在我们的姊妹网站Code Review 上发帖,在那里您可以获得有关工作代码的反馈。
  • @Code-Apprentice 要发很多代码,我至少有 10 节课。是否可以改为发布到 github 的链接
  • 我建议您查看他们的帮助中心以获取发布指南。至少,您可以减少代码。例如,您提到您有 3 个类似的活动。只显示其中两个。

标签: java android oop design-patterns


【解决方案1】:

只是一些建议,以我的拙见...

  • 减少类的数量不应该是一个单独的目标。
  • 看起来相同的多段代码实际上可能在逻辑上做不同的事情,并且将来可能以非常不同的方式发展 (DRY is about knowledge, not code)。
  • 在设计时始终牢记SOLID,当您说“我可以使用一个类并传递命令或 api”时,这对于单一职责和开放-封闭原则来说听起来更糟。

话虽如此,如果有一些看起来(实际上是)相同的代码,请尝试将它们分解到注入到您的类中的服务中。只是尝试通过将所有看起来相似的代码放在带有一些参数和一些 if-else/switch 块的类/方法中来降低复杂性,因为从长远来看,这通常比拥有更糟糕很多小而有组织的课程。

【讨论】:

    猜你喜欢
    • 2016-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-22
    • 1970-01-01
    • 2016-03-23
    • 1970-01-01
    相关资源
    最近更新 更多