纵观App开发多年(Android是09年开始关注),还没有一本谈App架构的书,因为App架构本身带有玄学,很难把App架构的写成一本书,套用一句话,没有最好的架构,只有适合自已项目的架构,再者,App架构的知识面涉及太多,且比较复杂的,它包含的东西很多,认真讨论估计一个点都能写成一本书;所以知道有这么一本书后,就第一时间买回来看。
目前,市面关于App开发的书籍,较多以片面的技术开发为切入点,如App的开发流程、控件的使用等等。针对入门有用,但很少有全面介绍的书籍。但这本书总体上讲还不错,从哲学角度思考,全面概括涉及到的技术,起到抛砖引玉,让读者有前进的方向。不管什么说,师傅引进门,修行靠自已。
内容
《App架构师实践指南》第一篇从App系统架构师的成长路线轻,让读者明白App架构师到底是做什么的,然后通过App基础语法、开发工具等基础知识,阐述了App开发的基本功。第二篇正式展开描述了架构师必备的关于App开发过程中所需的综合技巧,其中涵盖了App常用模块设计、App架构和重构、质量和稳定性、性能优化、安全逆向及热门技术等内容,深入浅出地将一个合格架构师应该掌握的内容娓娓道来。第三篇从团队合作的角度描述了App架构师如何高效地开发和管理一个App项目,并使该项目具有可持续发展的可能。第四篇则以轻松的口吻向所有希望通过本书完成App“码农”向“架构师”升华的程序员们介绍了一些心得体会。面很广,但未进行深入讨论,这就是一直没有人出书的原因吧。
定义
架构师,软件技术领域一个高大上的名词,业界有言“人人都是产品经理”,却很少听到“人人都是架构师”。其本身涉及的复杂庞大的跨领域知识体系除外,对于架构一词,其实很难去完整地定义,我们也没必要过于纠结,就如我们为什么要登山,因为山在那里,执着前行,或许还未曾知晓路在何方,抑或你都不曾思考要去何方,但至少你已经在路上,成长为架构师是一个过程,而不是一个结束。
架构师是一个给技术团队定方向,带方向的“一号位”,他本身对于技术落地要有优秀的理论和实践积累,且对技术反哺业务要有敏锐的嗅觉;在App开发中,架构师要具备:
- 良好的架构建设能力,优秀的开发语言运用能力,同时对第三方构建工具及优秀开源软件原理有深刻的认知;
- 具备框架顶层与模块局部设计 的前瞻能力,注重初始设计与重构,平衡抽象与实例;
- 必须具备App开发的性能评估、质量检验、问题分析、性能优化、安全、冷热修复等方面丰富的知识体系;
- 在项目管理及产品思维方面有较深入的思考,在如何快速迭代开发,项目全链条有序推进及技术如何赋能产品业务等方面均有可落地的策略支撑。
App架构师的核心职责包括选型规划、架构设计、技术攻关、沟通协调、疑难攻略等,这些对架构师来说应该都是通用的。
技术路线
自我定位
以前真的很天真,以为看了某一本书,就能成为书中的英雄;所以你若认为读了这本书就能成为App架构师,那这本书就不适合你,真的,这本书并不是深入讨论技术,看完估计也学不支啥实用的技能;那这能本书带给我们什么,我认为其实就是能你普及知识的,重点去学习它的观念,一个架构的观念。这个非常关键,认真体会,受益匪浅。
基础语法
如果你只会一门编程语言,无论多么精通,仍然显得不够优秀。确实,即便你只精通一门编程语言,也要进行各种语言的了解,不能因为自己不从事相关的工作,就不进行了解学习,干坐井底之蛙。如今IT行业更新换代太快了,一不留神,你就会被行业抛弃,所以就是要不停的学习。如在APP领域,有Swift、Kotlin、小程序等新物种。例如Swift 和Java的区别和新特性,即便市面上普遍都是OC,但你至少要做到,和别人提及Swift语言,熟悉不陌生,不同的语言虽然语法不同,但是其逻辑思想是通用的,也就是说,学会一门语言,再学习另一门语言就比较容易,从而快速提升自己。
(从事过:QBASI、C语言、Java,另个会或在学习:Python、Swift、Kotlin)
App开发工具系列
我认为在我们手中的工具箱,其实已经有了不少经过精心设计、凝聚人类共同智慧,并且已经被实践证明行之有效的工具,完全可以拿出来用于解决当今世界面临的各种挑战。当然,在使用的过程中,我们要注意它们之间的相互配合,相互协作,并且对其不断创新和完善。
- 编译工具
- 编译调试
- 版本管理
- 产品设计
现在是一个工具为王的世界,所有事情几乎都可以通过各种工具去解决,工具就是经验的积累,正所谓“手中无剑,心中有剑”。
App SDK使用系列
SDK即软件开发工具包,Google和Apple分别为Android和iOS开发提供了SDK,使得辅助开发者可以更快速地完成App的开发。
生命周期
UI设计
存储和网络
没有捷径,只有亲身经历过才知道,“纸上得来终觉浅,绝知此事要躬行”。
常用模块
常用模块则是平常在快速搭建和开发App当中,会调用一些自己或别人历史的积累和经验总结而成的第三方库或者工具库。
组件化、模块化、插件化
模块:强调职责,可实现的单元,其核心是内聚和分离
组件:也称构件,强调复用.其依赖性比较高.
插件化则是另一种实现方式,其三种方式目的均是为了实现重用和解耦,而插件化则是更注重增量满足其目的.
设计模式、接口设计、架构模式
设计模式是指,在实现业务逻辑时,代码逻辑的目标和实现模式,例如:MVP,MVVM,MVC等.
接口设计的概念却是主要体现在封装的概念上,一个强大的库,其封装的接口越灵活,越成熟.
这三点,可谓是架构的重中之重,一个项目代码是否高效,是否成熟,都和这三个有着密不可分的关系。
性能优化
硬件性能
UI和CPU
内存性能
网络性能
包Size
启动速度
代码优化
架构和重构
对于开发者来讲,构架设计是软件研发过程中最重要的一环境,正所谓,没有图纸,就建不了房子。要知道好的架构是一切美好的开始。
- 组件化和模块化
- UML基本功
- 设计模式
- 接口设计
- 架构模式选型
- 重构
质量和稳定
没有质量,一切都是负数!质量和稳定才是App的生命。
- 质量稳定性指标
- CI和代码监控
- Crash
- 测试
架构师思想
之前也加入过一些群,交流过想法,有人些动不动就提架构(估计他自已连架构是什么都不清楚);说真的,架构还真有点虚,是一个看不着,摸不着的东西。
架构的核心就是功能、安全、性能和稳定。其实,在具体架构实践中,我们很难完整系统地全部描述特征,架构是一种折中,“架构师玩的是折中的游戏,对于一组给定的功能需求和品质需求,没有唯一的正确架构和唯一的正确答案”。作为架构师的我们,需要考虑的是如何做得更好,如何避免负面影响。
总结
本文是读《App架构师实践指南》有感而发,移动互联网是未来物联网世界和大数据世界的基础设施,App开发是移动互联网目前产生价值最核心的技术。随着App开发需求的日益强盛,App架构师也会越来越得到重视,并成为App开发产业的中坚力量;只有坚持学习,才能让你早日成为你心目中的英雄,所谓“看山是山,看水是水;看山不是山,看水不是水;看山还是山,看水还是水”