[译]每个Android开发者应该知道的关于架构的10件事

原文地址:10 things every Android app developer should know about Architecture

在面向对象的理念中,单个应用程序的体系结构可以简单地描述为系统中类的放置在什么位置以及它们如何通信。我们在对这些类分组时,描述了这些类的角色和职责。

下面列举了可以帮我们理解架构的内容:

  1. 架构是与语言和平台无关的。架构是基于编程的基本原则。这些编程的基本原则(SOLID原则或者设计模式)是稳定的,且这些知识可以跨语言和平台使用。投入时间学习架构可以获得丰厚的回报。它不仅有助于我们设计更好的架构,还可以提高我们的编码技能。

  2. 关于MVP/MVVM的困惑。MVP(Model-View-Presenter)或者MVVM(Model-View-ViewModel)的职责是从代码中分离UI。我们使用Presenter或者ViewModel从View(Activity/Fragment)中抽取逻辑相关代码。这一过程涉及到VP或者VVM模块,而剩下的Model模块用于向Presenter或者ViewModel提供数据。

    我通常看到的是Presenter和ViewModel是通过接口和观察者实现的,但除此之外,它是混乱的。我认为这可以归咎于将VP / VVM用于应用程序的整个架构而不是努力塑造模型(M)。MVP / MVVM作为架构模式起着至关重要的作用,但应用程序的架构不仅仅是将UI分离。

  3. 架构是重要的,但不是不可或缺:学习架构是Android应用程序开发人员发展的后期阶段。其中一个原因是,即使没有架构,我们也能开发出在功能上出类拔萃应用程序,为什么要花费额外的时间?我们如何说服我们的老板/客户,我们花费的额外时间可能没有任何直接的好处?

    只有在几个版本之后,我们才意识到我们所处的混乱,但现在已经太晚了。当我们一次又一次陷入困境时,我们开始了解架构的必要性。

  4. 架构提高可扩展性:如果只有一个版本可以发布应用程序,那么架构并不重要。事实上,这是我们许多人在开发应用程序时采取的方法,这是短视的。如果我必须指出拥有适当的架构的最大好处,那就是易于修改及其有效性。

    确实,我们无法预见应用程序未来可能成为的一切,但良好的架构有足够的灵活性来适应未来未知的变化。

  5. 架构不需要要学习专门的知识:对于一个优秀的程序员来说,设计架构很自然。这一点与上面第一条是重复的。但是它很重要,因此,需要重新声明一遍。

    Dagger/RxJava 或者其他工具需要我们学习和他们相关的知识。在架构的情况下,它只是编程原则和指南。我们在编码方面变得越优秀,我们越能够更好地可视化应用程序的体系结构。

  6. 架构需要不断的实践和耐心:架构就像一颗果树,我们不能指望它一天就能结出果实。设计架构需要时间和精力,而且这是一个持续的过程。应用程序中的每个更改都需要在实施之前做出深思熟虑的决定。
    当我们开始采用快捷方式时,主要的损害来自应用程序架构。我们对自己做出的承诺(以后清理代码)只会被一次又一次地打破。
    我们需要了解我们正在进行的工作,否则这将是一个很好的开始,只会在以后失败。架构是我们对应用程序的终身承诺。

  7. 谷歌架构组件:在2017年,谷歌引入架构组件。架构组件不仅仅是为了将混乱从Activity / Fragment转移到ViewModel。这些“架构”组件可以帮助我们设计应用程序的架构。这些组件使得实现架构变得容易,否则这将是一项艰巨的任务。例如,LiveData可以轻松观察数据中的变化,这些变化过于尊重Activity / Fragment的生命周期。人们可能会发现ViewModel是一种在配置更改中幸存下来的方法,但其真正的含义是帮助我们将UI与逻辑分开。

  8. 我们不必所有人都称为软件架构师:每一个软件架构师都是一个软件开发者,但并不是每一个软件开发者都是一个软件架构师。在大型项目中,会有指定的软件架构师。对于他们来说,理解各种架构模式以及其工作原理是至关重要的。
    作为开发人员,理解架构有助于理解我们所实现的抽象。如果我们是自由职业者或资源有限的初创公司工作,这就变得更加重要。在这种情况下,拥有软件架构的基本知识就足够了。
    我们可以采用许多简单的模式和原则来为我们的应用程序创建一个较好的架构,而不需要深入到架构世界。

  9. 架构的好处:如前所述,其中一个优点是可扩展性。如果组件被正确划分并以有组织的方式进行通信,则添加新功能和修改代码非常容易快捷。这种分离带来了许多其他优点,例如可测试性,我们可以轻松地单独测试组件。

  1. 从哪里开始?架构无处不在。嵌入式系统,web应用,企业软件,移动APP等等。每种软件都需要不同的架构。除非我们想成为软件架构师,否则我们必须选择我们的开始。

    理解架构和实现的参考书目为:Robert C. Martin的Clean Architecture 和Eric Evans的 Domain-Driven Design: Tackling Complexity in the Heart of Software
    谷歌提供了APP架构指南。一旦掌握了,您可能希望实现Clean Architecture引导的分层架构模式。这种方法很简单,适合大多数应用程序。我按照这些原则创建了一个示例应用程序。示例的代码在这里

你可能感兴趣的:([译]每个Android开发者应该知道的关于架构的10件事)