根据我的经验,UI 逻辑与其它逻辑耦合在一起,会导致代码的可维护性越来越差,迟早会使用代码变得难以理解,无法阅读。到最后,可能会因为功能上的一点小变化,引起很大的副作用。
要将 UI 逻辑与其它逻辑进行分离,可以用使用 Model- View - X 的架构模式。例如: Model-View-Contoller(MVC)、Model-View-Presenter(MVP)、Model-View=ViewModel(MVVM)。这些架构模式都属于同一类架构,当然,这一类架构不仅仅包含列举的这几个,还有其它的架构模式。在这里,为了更方便的描述这一类架构模式,我把他们统称为 MVx 模式。
当你在学习 MVx 模式的时候,请记住,这些都不是架构,而是一种架构模式。这些架构模式仅用于 UI 展示逻辑。因此仅仅使用 MVx 并不能给你一个好的架构,要有一个好的架构,你还需要在其它方面做出更多的努力才能实现。
- 多线程
有经验的 Android 开发者都会了解多线程,并且了解他们对应用程序的影响。你也许会说,我精通 AsyncTask、RxJava、协程等。我想表达的多线程不是你理解的这个。会使用多线程框架并不等同于理解多线程。
举个例子,众多 Android 开发者都认为,使用 AsyncTask 会导致内存泄漏。这个观点来自 Android Studio 默认的多线程 lint 规则中。既然如此,那这个观点就是对的了吗?很不幸,这个观点是错误的。在这里,我不讲解它们的细节,你可以读一下这篇文章,里面有很多关于 AsyncTask 的内容。
我认为要理解多线程程,就必须可以使用任何多线程框架,甚至是基于基础的 Thread ,都可以写出正确的并发代码。要实现这个目标,你不仅仅需要知道你喜欢的多线程库的 API,你还需要理解多线程的细节。这些多线程库虽然好用,但如果你不理解多线程的基础细节,那么你的应用程序出现多线程的问题只是时间问题。
如果你想学习多线程,从这个视频 开始,视频中讲解了所有 Android 开发人员都需要知道的基本概念与原理。
- 自动化测试
据我所知,很多 Android 项目,都没有使用任何的自动化测试。在使用自动化测试的项目中,大多数也是 QA 人员使用 Appium 之类的工具来完成的。这是整个 Android 行业的现状,非常可悲。之所以没有自动化测试,这个问题可以追溯到 Android 起源,Google 也在很长一段时间里,没有关注过第三方应用的自动化测试。
现如今,有单元测试和 UI 自动化测试经验的开发者需求量很大。即使你到一家没有使用过任何自动化测试的公司去面试,如果你说你会自动化测试,就会给你的面试加分。反之,如果你去的是一个广泛使用自动化测试的公司,你没有自动化测试的技能,这会给你面试减分,处于劣势。
因此,我建议每一个 Android 开发者都去学习一下自动化测试的相关知识。就个人而言,我更喜欢单元测试。而一些开发者喜欢 UI 自动化测试。所以,可以选择一个你更感兴趣的技术,尝试一下。
4 年以上经验
如果你对 Android 已经有了非常丰富的开发经验,那么,是时候学习一些“元”技能了,并且在特定领域进行深度研究。在我看来,以下技能对专业的开发人员来说,都是非常不错的方向。
- 技术方案评估