重构的经历

本文分享了作者在Android项目开发中的重构与美化经历。因原代码存在传递参数用静态变量、滥用写文件、重复代码等问题,作者进行了模块重构。之后对界面进行美化并减轻项目体积,还分享了引入QMUI界面失败的案例及补救方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

年初入职了一家公司,公司原本Android开发只有一个人,我去了算两个。
刚开始,他给我介绍了一种目录结构,和后台用业务,模块分包类似,接触之后觉得太方便了,分享记录一下:

···

包名  
       模块包名
				MVP{View,Presenter}(接口类)
                Activity
                Presenter

···

重构原因

这种愉悦的感觉并没有维持很久,当我和这位同事共同开发一个项目的时候,我进入项目的时候,他已经做了一段时间了(也许他也是从别人那接手的)。编译运行在测试机上,出现的第一个界面竟然是几个简单的按钮:侧拉主页面,登录页,还有什么。

我内心是有点崩溃的,因为巨丑,巨不讲究。然后默默搞了个主页(小作坊),然后终于能正常的业务开发了,当我开发了五个模块,对方1个模块都还没完,而且还是不讲究。正好有其它项目来,这项目就我一个人做了。

那时候项目已经快实施阶段了,我打开看他的代码,举点栗子:

  1. 页面之间传递参数,用的静态变量来传递。
  2. 滥用写文件
  3. 重复代码,一模一样的方法,在3个fragment中写三遍。
  4. 命名用tv1……tv6,et1……et6

实施的时候需要修改的巨多,每次改他的模块都痛不欲生,然后就重构。

重构模块

  1. 让他的类继承了我写的基类(做的模块多,自己提取的),一些每个页面都有的方法写入基类:showProcess,hideProcess,showToast,统一的title,还有项目中用到的开关NFC扫描等等。
  2. View继承IView接口,因为BaseActivity已经实现了IView的方法。继承是为了在Presenter中调用基类的方法。
  3. 界面修改,1方面是对话框页面中的et1,et2全部修改成能通过id看出这个输入框功能的id,然后是把界面显示的风格调成一致的。
  4. 页面的操作很复杂,单其实业务很简单:扫码-对话框填写-关闭对话框-点击保存文件-请求接口(文件就是写入的页面上的数据),我梳理了这个模块的操作模块之后,把操作流程拣货为扫码-对话框填补充信息-关闭对话框并且请求接口。
  5. 到这以后,差不多就算对这个模块已经了如指掌了,把乱入的静态变量修改完,重构结束,继续完成需求。

美化与减轻项目体积

经理:把界面弄好看点
我:好的

因为上面的对话,我浏览各大图片网站,icon图片,界面颜色配合,自己抠图,作图。反正就是要换很多图片,要把字体颜色,字体大小还有好多东西都要改改。

改的时候稍稍一浏览,几乎全部layout文件都要改!图片可以直接命名一样重写,但是类似这种风格的界面,重复工作量巨大:
在这里插入图片描述
左边一列统一,右边一列统一,然后这些TextView就可以抽象一个style出来,写style文件。其实这个没有完全做到,很多地方由于懒惰没有动。但是在第二个项目中基本从一开始就是用的style的模式,省很多事。

然后就是图片,我们这个项目不知道同事从哪个项目抠出来的,很多图片资源没有删除,而且不仅仅是图片,还有很多activity,layout,values都是无用的。我网上查了下,有工具可以查找这些文件,但是由于时间,还有其它的原因,还是一个个手动删除的。

失败案例

我在网上看见QMUI的界面,心痒痒想植入我们项目来(恰逢经理叫我美化界面),然后折腾了很久,文档说implement一个包就行,我记不得原因了,反正当时是死活不行,倔强的我把源码搞下来,import作为一个模块,emmmm,还有一些jar包冲突,再次倔强的强行解决,折腾引入可以用之后,发现最想用的功能(QMUIDialog中做得跟Toast风格很类似的提示,警告,完成,错误,加载中……),这个功能用不了,在完成接口请求之后给用户提示,那时候可能已经关闭了页面,在dialog进行inflate的时候,一次又一次闪退了。

没办法,确实不能用了呢,引入失败了呢。

补救:最后,我确实还是把那个最想用的Dialog风格用上了,把图片搞出来,自定义一个Toast,提示的Toast就没问题了;加载中的那个自定义了一个对话框,也很简单,发现自己之前就走了一堆弯路。

告诫了我不要在读源码上偷懒啊,不然走的路更多。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值