2016-05-14 45 views
0

我试图理解Android上模块的概念。我读过this article on the official documentation,但我有点困惑。这里指出:关于应用模块的Android Studio最佳实践

一个Android应用程序模块是应用程序的源代码,资源文件和应用程序级别的设置,例如模块级构建文件,资源文件和Android清单文件的容器。应用程序模块内容最终会内置到安装在设备上的.apk文件中。

这几乎是我在这方面找到的所有文档。我仍然不明白在哪些情况下创建不同的模块是有意义的。我知道它可能因案例而异,但理想情况下,模块的最小逻辑大小是多少?

一个实际的例子

我建立与一个抽屉视图的应用程序。抽屉中的每个按钮都会打开一个片段,这个片段会有一些逻辑。制作一个只包含一个片段和一些没有任何活动的Java类的模块是否有意义?

我真的很想知道哪些是最佳做法。

谢谢。

+1

只有在距离很远的情况下才有意义。作为一般规则,如果我打算稍后将该模块作为开源库发布,我只会启动一个单独的模块。你建议的这种分离级别是很有意义的。 – Budius

+0

感谢您的反馈。你能详细说明“远处”的含义吗? – Aurasphere

+0

我给你一个真实的例子。我在一个非常大的应用程序中使用RecyclerView的LOADS。我们需要很多功能(滚动装载器,页眉页脚等),这些功能最终可以被我工作的任何其他项目使用。我在一个不同的模块中开发了这些工具,当它工作正常时,我将它移动到一个单独的项目中,并在Github(https://github.com/eyeem/RecyclerViewTools)中发布。 – Budius

回答

2

也许将代码和资源分解为模块的最佳参数是可重用性。如果不是这种模块的多个依赖项,为什么你需要把这个代码分离出来放到一个模块中?如果你只有一个应用程序,就没有太多的需要将这些代码分解到一个模块中。

只要你有多个应用程序共享相同的代码,那么我认为一个模块是合理的。一个模块可能是很多东西。它可能是一个包含大部分代码的基础应用程序。它可以包含应用程序的“模型”方面,或者可能包含API或网络层。它可能是专有算法的容器。它可能是你计划开源的一些通用代码。谁知道?

从相反的角度考虑它。如果你真的不需要,现在做这个的风险是什么?也许精神开销?考虑和维护这个模块可能比它的价值更麻烦,因为如果你没有充分的理由去做这件事。

推迟这个决定的成本是多少?有没有什么令人信服的理由说明,为什么在稍后的某个时候,这段代码无法重构成主模块?

对于单个UI组件而言,一个小的单个Fragment听起来像是不需要在其自己的模块中的东西。