大型 Android 系统重构实战
黄俊彬
Thoughtworks 资深咨询师
2840 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 29 讲
大型 Android 系统重构实战
15
15
1.0x
00:00/00:00
登录|注册

15 | 重构实操:化整为零,落地文件模块MVP重构

你好,我是黄俊彬。
上节课,我带你学习了针对“过大类”代码坏味道的重构方法,我们将组件内分层架构重构流程分为 3 个维度和 7 个步骤。
但在实际代码重构落地过程中,你一定会遇到这两个问题。第一个是在代码重构时,很容易引起新的 Bug,然后会被质疑做代码重构的意义。这也是很多开发同学宁愿选择复制黏贴,也不轻易对原有代码进行重构的原因,因为一不小心,很容易背锅。
第二个问题是代码重构时仅通过人工挪动调整代码,既低效又容易出错。并且最后只能依靠手工测试来做质量验证,反馈效率也非常差。
所以今天这节课,我们将按照组件内分层架构的这 7 个步骤对文件模块的主页面进行 MVP 重构,在这个过程中你可以感受一下我们是如何解决上面这两个问题的,也就是说怎样重构才能速度快又不会出错?

第一步:业务分析

搞清楚需求是一切的开始,重构也一样。如果我们对原有的需求一知半解,然后就急于重构,那么大概率会以失败告终。甚至在重构时,我们需要更进一步去挖掘那些“失传”的逻辑,以始为终才能让我们不会做错方向。
文件模块的主页如下图所示,从页面上来看,文件模块只是用于简单地展示文件的数据。
但通过需求分析及梳理,我们发现该页面还包含了其他异常处理逻辑:
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文详细介绍了针对过大类代码坏味道的重构方法,并以文件模块的MVP重构为例进行了详细阐述。作者提出了重构的具体步骤和技术细节,并强调了自动化测试在重构过程中的重要性。通过演示动图展示了自动化重构的步骤和快捷键的使用,以及对重构后的代码进行中小型测试的过程。文章还强调了使用RxJava优化异步线程操作的重要性,并提供了重构后的代码示例。最后,作者总结了重构的关键流程和要点,并提出了思考题,引发读者对代码重构效率的思考。整体而言,本文内容丰富,逻辑清晰,对于需要进行代码重构或了解MVP架构的开发人员具有很高的参考价值。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《大型 Android 系统重构实战》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(3)

  • 最新
  • 精选
  • peter
    请教老师几个问题: Q1:RxJava以前用过,记得是用来做网络请求的,也是线程库吗? 如果是的话,除了RxJava,还有什么线程库(或线程池)? Q2:MVP中架构中,P被称作“表现层”。从字面意思看,“表现”容易被理解成界面、显示一类的东西。实际上,P一般是负责网络请求、逻辑处理方面的事情。感觉“表现层”这个用词不是很好啊。 Q3:安卓手机上的APP可以直接运行在安卓平板上吗? 或者,需要做一些移植工作?

    作者回复: Hi,peter。 Q1:异步操作除了Rxjava,也可以使用JDK提供的线程池或者Kotlin的协程。 Q2:感谢反馈,是会有点歧义。 Q3:一般需要适配,特别是视图的显示。

    2023-03-15归属地:北京
  • 湛卢
    有完整的代码示例吗

    作者回复: Hi,完整的示例代码更新在github,https://github.com/junbin1011/Sharing。

    2023-03-15归属地:浙江
  • 李鑫鑫
    这块的代码有吗?

    作者回复: Hi,代码随着课程更新在github,地址:https://github.com/junbin1011/Sharing

    2023-03-15归属地:北京
收起评论
显示
设置
留言
3
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部