[译]每个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引导的分层架构模式。这种方法很简单,适合大多数应用程序。我按照这些原则创建了一个示例应用程序。示例的代码在这里

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,254评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,875评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,682评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,896评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,015评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,152评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,208评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,962评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,388评论 1 304
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,700评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,867评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,551评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,186评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,901评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,142评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,689评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,757评论 2 351

推荐阅读更多精彩内容