专栏首页博文视点Broadview移动开发架构选型大PK

移动开发架构选型大PK

架构设计在现今已经成为软件开发必不可少的环节,而架构学习和架构选型往往是一个困难的“工程”。若有一天我们想要改善现有软件的架构模式,或对架构的选择感到迷茫,我们应该如何找寻方向,选择合适的架构呢?

本文帮你认清团队规模和目前存在的问题,并分别针对大、中小团队及创业公司给出推荐架构选型方案。

▼▼▼

选择合适的架构需要认清团队规模的原因在于:

  • 团队规模代表着新技术的学习成本。
  • 团队规模与软件规模有一定关联。
  • 团队规模强调开发效率和软件可维护性的重要性。

如今敏捷开发盛行,越来越多的公司倾向于从大型团队中剥离出几个小团队,管理不同的业务模块。一般,每个小团队由4~6人组成,这样的模式更能提高软件问题的解决效率,这也是一些管理者认为的最佳团队规模。如果你在大公司,那么很有可能你就处于这种流行的、类似分治思想的团队之中。

大型技术团队

你也有可能处在中小型技术团队之中,这种团队可能会负责一般规模的软件系统,但是这里的开发人员或许要比大型技术团队中的开发人员掌握更多的技术,而且其忙碌程度也可能更高。所以,团队规模并不能代表团队中开发人员的工作任务难度和技术学习成本。

中小型技术团队

还有一种可能是你处在创业公司,或是非科技公司的“团队”,即独立开发者。你一个人要负责整个App的维护。App规模或小或大,对于开发者来说,在掌握业务的基础上,他可能还需要关心App的构建与发布等问题。独立开发者如图16.7所示。

独立开发者

后面将针对大型技术团队、中小型技术团队和独立开发者,提供架构选型的建议。

在认清团队规模后,你还需要找出团队目前存在的问题,即系统内部问题和系统外部条件。

系统的一部分问题可能是由于外界带来的需求而产生,一部分问题可能是内部团队的规则定制所带来的,在架构选型之前,我们可以通过内部和外部的调研,找出系统目前存在的问题,再选择最有利的架构模型。

在MVX系列架构模型中,MVC架构的Massive View Controller问题已经被太多的开发者所不能接受,选择MVC架构模式对于软件需求变化的快速响应,并不是十分有利。

而MVP架构是移动开发现阶段比较流行的架构模式之一。使用MVP进行面向接口编程,在大型技术团队的大型软件项目中,非常有利于业务组件之间的解耦,MVP架构是大型技术团队的适用架构模式。

MVP的Presenter具有复用性问题,我们可以选择使用The Clean Architecture系列架构来解决这一问题,将业务逻辑划分为更小的类,在大型软件项目中更利于业务逻辑的维护和代码的抽象设计。

MVVM架构同样是推荐的架构之一,但是在移动开发中,开发者对MVVM架构的理解与使用并没有像MVP架构这样普遍,使用MVVM架构会增加学习成本。使用MVVM架构的同时,可以引入Google官方推荐的架构组件AAC。

对于大型技术团队而言,若将团队划分为多个小型业务团队,那么模块化系列架构是尤其推荐的架构模式,组件化架构可以将项目分而治之,这与团队组成形式的特点有着相同之处,插件化架构可以根据团队的业务需求而进行选择。

所以,对于大型技术团队维护的大型软件项目,非常推荐MVP架构,可以考虑The Clean Architecture系列架构,同时推荐使用组件化技术将架构进行组件划分。而对于可以接受学习成本的团队,也推荐使用MVVM架构和Android Architecture Components系列组件。

大型技术团队架构选型

在中小型技术团队中,技术选型有着更高的灵活性,团队成员对技术的学习成本的重视程度相对而言更低一些。

在中小型技术团队中,使用MVVM架构设计和Google官方推荐的Android Architecture Components系列组件是非常不错的选择。大多数时候,中小型技术团队人员扩增可能并没有大型技术团队那样迅速,所以,技术的学习成本并不是一个非常棘手的问题,进而提高了选择MVVM架构的可能性,在此基础上使用Dagger2实现依赖注入,使用RxJava2进行函数响应式编程也是不错的选择。

而MVP架构同样是推荐的架构模式之一。组件化设计在中小型技术团队是一个备选方案,在软件业务规模并不是很大的时候,可以选择后期再考虑重构。

中小型技术团队架构选型

独立开发者的架构选型具有更高的灵活性,架构选型在外部受业务需求的影响,在内部受团队开发者的技术掌握程度的影响。

由于MVP架构涉及更多的面向接口编程,对于独立开发者而言,可能在某种程度上提高了开发的复杂度,所以,相比MVP架构,MVC架构和MVVM架构是更推荐的方案。

而函数响应式编程相关框架RxJava2也可以用来为独立开发者提供优雅的编程模式,独立开发者在维护规模并不大的移动应用系统时,可能并不需要处理非常复杂的依赖关系,所以,可以在需要的时候再考虑Dagger2。

独立开发者构架选型

在现今的技术盛世中,各种架构模式“百花齐放”,然而每种架构模式的概念都比较晦涩难懂,这不仅使得一部分初学者“从入门到放弃”,也让进阶人员耗费了太多的学习成本。

帮助你搞定移动开发架构设计的《移动开发架构设计实战》一书现已上市,在移动架构开发中传承整洁架构之道!

传世经典《程序员修炼之道》作者 Andy Hunt 等专业人士力荐,帮助入门开发者了解架构模式,进阶开发者掌握架构模式,技术领导者进行架构选型,并填补移动端或Android架构实战书籍的空白。

本 书 特 色

专注:50+实战案例。填补移动开发架构设计书籍空白

全面:10+架构模式。流行移动端架构全面囊括

实战:10+系统设计实战。代码注释丰富,易于理解

易读:学习门槛低。内容精练,语言通俗易懂

█ 关 于 作 译 者

李云鹏

  • 网易新闻架构技术组工程师,沐暄网创始人
  • Oracle、Adobe等企业认证专家
  • 10年互联网经验,曾就职于世界500强企业核心技术实验室
  • 擅长移动端架构设计、项目重构与Intellij插件开发
  • 参与网易新闻组件化架构设计,视频模块、统计模块等多模块重构
  • 喜欢创新和研究

█ 大 咖 推 荐

传世经典《程序员修炼之道》一书作者 Andy Hunt 对本书赞誉道:

Congratulations to Leo on the publication of this book. Most people don't realize how much hard work and care goes into a book, but I can tell you it is quite a lot. Read this book and take advantage of Leo's hard work and experience. After all, the person who does not read books has no advantage over a person who can not.

此外,众多国内外行业大咖同样力荐:

  • 何青 / 网易资深Android工程师、前百度贴吧工程师,作者导师
  • 刘望舒 / 《Android进阶之光》《Android进阶解密》作者,无线技术专家
  • Yury Camacho / GDG发起人,著名国际演讲者,谷歌技术专家(GDE)
  • 朱金鹏 / 谷歌技术专家(GDE)

█ 本 书 主 要 内 容

本文分享自微信公众号 - 博文视点Broadview(bvbooks),作者:李云鹏

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-11-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • “架构”到底指什么

    对于技术人员来说,“架构”是一个再常见不过的词了:我们会给新员工介绍整个系统的架构,参加架构设计评审,学习业界开源系统(例如,MySQL、Hadoop)的架构,...

    博文视点Broadview
  • 单体架构与微服务架构对比,为什么采用微服务架构

    就像很难用一个绝对的方式去判断架构好坏一样,在大多数场景下,我们也很难从一个外部的视角去判断服务拆分粒度的合理性,需要对上下文非常了解才能做出一个好决策。例如,...

    博文视点Broadview
  • 为什么你会觉得微服务架构很别扭

    微服务架构和传统的架构方式思路完全不一样。例如传统方式实现高可用,更相信流程,更相信KPI对人的影响,因此流程需要让更多的人去测试,制定更严格的发布流程。

    博文视点Broadview
  • 聊聊架构设计做些什么来谈如何成为架构师

      也因为碎片化的时间多了,所以开始刷某乎了,关注了架构相关的板块,也顺手回答了一些问题。发现有很多同道中人正在经历着我前两年经历的阶段,对于做架构没有相对具象...

    Zachary_ZF
  • 《一线架构师实践指南》—— 读后总结

    之前总觉得架构是一件很高大上的工作,跟普通的编码设计不太一样。前一段实践,自己也尝试做过架构的工作,可惜经验不足导致架构非常混乱。这里读完这本书,大体上对架构...

    用户1154259
  • 架构如何为业务和技术“服务”(1)

    前言 为提升架构对于项目,产品的贡献度,更好的服务于业务和技术,本文将探讨架构的现状和规划未来架构的目标。 在讨论架构、业务、技术的问题前,请耐心的阅读完本文有...

    用户1177503
  • 美丽的架构

    美丽的架构究竟是怎样的?架构师们上下求索,孜孜以求,始终不得其解。归根结底,美丽这个词语总还是偏于感性认识,就仿佛音乐之美,绘画之美,不能以尺度来衡量,追求的其...

    张逸
  • 工作多年,我对架构的一些理解

    每一个程序员都听过架构这个词,每一个程序员都有自己对此的理解和看法,本文分享我对架构的理解。

    Frank909
  • 那些没说出口的研发之痛,做与不做微服务的几大理由

    如果在诸多热门云计算技术中,诸如容器、微服务、DevOps等,找出一个最火的方向,那么非微服务莫属。在小数推荐的这篇文章里,做与不做微服务好像理由都很充分。另外...

    程序猿DD
  • 什么才是真正的架构设计?

    在软件行业,对于什么是架构,都有很多的争论,每个人都有自己的理解。此君说的架构和彼君理解的架构未必是一回事。因此我们在讨论架构之前,我们先讨论架构的概念定义,概...

    xcbeyond

扫码关注云+社区

领取腾讯云代金券