在编程之余,有时候我就在想,什么样的程序员属于高级程序员呢?或者说,高级程序员有哪些特性呢?工作年限一定不是一个关键的指标,许多工作多年的程序员依然写不出优雅的程序。无论是在Android开发还是其他领域,高级程序员一定是勤奋的,可以快速地掌握大量的新技术、新框架,不仅懂得原理,还能把新的技术落地到公司的产品中去。这是衡量程序员工作能力的一个重要标准,那么怎样才能将技术运用自如呢?唯有实践。基于此,我想把自己在日常实践中的一些经典案例,编著成一本成体系的书,以便为想要进步的Android程序员增加更多的实战经验,这也是编写本书的核心目的所在。
编写本书的另外一个目的,是帮助程序员建立产品的思想,对于技术而言,孤立的存在是没有任何意义的,技术只有与需求相结合,才能具有自身的价值。技术人员在开发的过程中,要时刻了解所完成的功能可以为公司带来哪些价值,是提升用户的访问兴趣,还是提升用户的使用流畅度,抑或是其他。当以产品思维去思考技术的时候,就会有动力、有目的地学习更多有价值的技术,而不是哗众取宠地学一些“看似有用”的新技术。
除此之外,还有理解架构的本质。一些技术人员经常会问:“为什么要使用架构?这只会增加额外的代码量,而且并不会对功能或性能有所提升,只需要完成必要的开发任务即可。”这种想法是非常浅显的,因为任何一个应用都不是一次成型的,需要不断地迭代,不断地扩展,同时需要不断地修改已有的业务逻辑,这就会涉及系统兼容性的问题。如何修改新的业务逻辑而不影响旧的业务逻辑?如何最大限度地复用已有的业务逻辑?架构就是解决这类问题的钥匙,一个优秀且合适的项目架构可以保证系统的稳定性,当开发新的功能或者修改旧的功能时,不至于破坏已有的业务体系。
本书的实例都是经典实战实例,每一个例子都代表一类在开发中需要掌握的技巧。本书由浅入深地逐个讲解需要掌握的开发理论与实践,共分为七部分。
◎ 进阶基础:偏重于源码的解析和理解,介绍阅读源码的技巧,以Activity和View为例,管中窥豹地分析其中的基础知识。读者也可依据此类方法,分析其他系统组件的源码。
◎ 高阶控件:介绍若干复杂的控件布局,即AppBarLayout、CoordinatorLayout和ConstraintLayout。通过实例,让读者理解在复杂控件布局中子视图是如何组合和相互关联的。
◎ 项目架构:分析主流架构的设计思想,即Google推荐的MVP和MVVM,还有Facebook的Flux。理解这些架构是如何组织和管理大型项目的,以及它们的优点和缺点各有哪些。
◎ 响应式编程:响应式是一种编程思想,在处理网络请求和功能测试时,基于响应式框架的项目拥有更好的可扩展性和可维护性,响应式编程三剑客即RxJava、Dagger和Retrofit。
◎ 酷炫功能与精美动画:实现两个稍复杂的功能,分别是基于第三方控件和基于系统控件的扩展;并实现两个动画效果,分别用于页面展开和页面切换。对于功能和动画,不同的需求或样式层出不穷,本部分侧重于开发思路的分享。
◎ Kotlin与SVG:Kotlin是用于替代Java的高阶编程语言,SVG是用于替代PNG格式的图像技术,本书着重介绍一些基础概念,提纲挈领,以便于读者后续进行自主学习。
◎ 测试与优化:分享一个主流的自动化测试框架,以及优化内存与电量的一些常见方法。产品的性能与功能同样重要,应用的高品质也会提升产品的用户体验。
这七部分几乎已经包含高级Android编程的全部内容,本书的每个部分都会通过多个实例,从不同的角度引领读者亲身实战,真正地掌握高级编程的核心开发技巧。但是,实例的数量终究有限,希望读者更多地关注于实战中的开发思想,而不是具体的代码逻辑,代码总会不断地更迭,解决问题的思维却历久弥新。本书中的实例更多的是以点带面,读者可以一边阅读和思考,一边编写代码,相信读完本书,一定受益匪浅;同时,通过本书的实例可以解决一些常见的开发需求。衷心希望每位读者在阅读完本书之后,都“不虚此行”!
2018年7月于北京海淀
《高级Android开发强化实战》京东链接:https://item.jd.com/12385680.html
简书的Android目录://www.greatytc.com/p/780658b79227