18

祖传代码,请勿乱动!

 4 years ago
source link: http://mp.weixin.qq.com/s?__biz=MzIxNDE1NjQ2Mw%3D%3D&%3Bmid=2649873059&%3Bidx=1&%3Bsn=e992e4f4a8ec76db23ef8bb72136ac47
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

在开发世界里,永远是技术至上,一门新技术的盛行总是有原因的,要么比老框架性能提升不少,要不更加易用等等。作为一个追求上进的开发者,就是要不断学习,尝试各种新技术。

APP自身在飞速发展,发展有两个方向:

1)死亡,我们的团队被优化;

2)版本不断迭代,新功能不断增加,业务模块数量不断增加,业务上的处理逻辑越变越复杂,同时每个模块代码也变得越来越多。对于app的不断壮大,这将引发一个问题,所维护的代码成本越来越高,稍微一改动可能就牵一发而动全身,改个小的功能点就需要回归整个APP测试,这就对开发和维护带来很大的挑战,更有甚者:一个app里面同质的SDK大量集成,最典型的就是网络SDK,一个App里面同时包含了Volley,Okhttp,Retrofit,其实,我们不想这样啊,我们是没办法才这样做的,因为,我们的app架构太混乱了,不敢动哦,有木有?

FZjMfuY.gif

明明只改了一行代码啊…

事实上以下才是根本问题:

1. 代码量膨胀,不利于维护,不利于新功能的开发。项目工程构建速度慢,在一些电脑上写两句代码,重新编译整个项目,测试的话编译速度起码5~10分钟,有的甚至更长,Gradle老是和我们过不去。

2. 不同模块之间代码耦合严重,有时候修改一处代码而牵动许多模块,更不用说切换SDK了。每个模块之间都有引用第三方库,但有些第三方库版本不一致,导致打包APP时候代码冗余,容易引起版本冲突。

3. 现有项目基于他人项目基础上开发,经手的人次过多,存在着不同的代码风格,项目中代码规范乱,类似的功能写法却不一样,导致不统一,然后我却不敢动手推翻重来。

AvaUzi3.gif

app重构后,系统更稳健了

如果之前app的架构无法满足现有的业务需求,我们该如何优雅地重构App呢?

从工作到现在,经历过了MVC、MVP、MVVM等,每个App由于项目特点和需求的不同,都会出现一套基于开发者所设计的架构模式,分层、组件化、模块化,每一种设计都是基于项目所在场景的,很难适合所有项目场景。

App 业务规模扩大,随之而来的是团队规模扩大,那就涉及到多人协作问题,每个移动端软件开发人员势必要熟悉如此之多代码,如果不按照一定的模块组件机制去划分,将很难进行多人协作开发;随着单一项目变大,而且Andorid项目在编译代码方面就会变得非常缓慢,在单一工程代码耦合严重,每修改一处代码后都需要重新编译打包测试,非常耗时。

模块化、层次化、控件化、组件化怎么应用到实践当中? Artifactory对模块化和组件化大有帮助;Jetpack可以有效减少OOM和No Pointer Exception;Mvvm则可以满足需求的变化。也许单个的技术点你了解过, 我们又该怎样将Artifactory、最新的Jetpack和Mvvm结合呢?另外,如何在搭建app架构的同时,进行App启动速度的性能优化呢?

为了让大家掌握这些技能,我邀请了国防科技大学研究生、全球首批Android开发者Allen老师为大家带来《架构实战》系列直播课程,让大家从Mvvm高级实战开始,快速成长为移动端大神 V7ZfYfB.png!web

在线实时答疑,有疑问,当场解决。

《从零开始手把手搭建App框架》

RbMzuaR.jpg!web

原价 199元 ,公众号粉丝专享限时 0.1元

本次课程将会让你对 架构实战 有系统而深入的认识 QzQnYj2.png!web

Allen老师:

中国联通资深架构师;全球首批Android开发者;10余年项目开发经验,独立开发应用被 360收购。

专精领域: Android架构,性能优化等技术领域。

课程大纲

1.13

Mvvm项目Gradle优化和本地仓库搭建

1、 APP架构应该怎样搭建?

2、MVx有哪些?区别是什么?

3、Android工程Gradle的使用规范和本地仓库搭建;

4、模块化、层次化工程搭建;

1.14

基于Jetpack的Mvvm高级架构逐步实现

1、初中级工程师是怎样实现架构?

2、架构师怎样实现控件化,怎样定义自定义的基类?

3、Mvvm Model的功能是什么?缓存有哪些级别,怎样提取Model的基类?

4、Mvvm ViewModel怎样和Jetpack结合,OOM问题在MVVM中怎样避免?

1.15

App组件化和启动性能优化

1、Fragment和Activity的错误处理页面有完美方案吗?他们的基类又该怎样实现呢?

2、App的白屏问题怎么解决?

3、App启动速度性能优化;

eyEvauU.png!web

附赠 Android架构进阶资料

22URVvN.jpg!web

立即扫码添加薇薇小姐姐报名

还有海量安卓工程师岗位内推机会! 头条、阿里等

“学好这堂课,就去动动老代码 eEVjA36.png!web


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK