加入收藏 | 设为首页 | 会员中心 | 我要投稿 我爱制作网_潮州站长网 (http://www.0768zz.com/)- 物联安全、建站、操作系统、云计算、数据迁移!
当前位置: 首页 > 站长资讯 > 评论 > 正文

这些代码有点臭,重构大法带你秀

发布时间:2021-04-19 16:37:25 所属栏目:评论 来源:互联网
导读:说 正常的重构是为了消除代码的坏味道, 那么高层次的重构就是消除架构的坏味道 最近由于需要将公司基础架构的组件进行各种兼容,适配以及二开,所以很多时候就需要对组件进行重构,大家是不是在拿到公司老项目老代码,又需要二开或者重构的时候,会头很大,

说 正常的重构是为了消除代码的坏味道, 那么高层次的重构就是消除架构的坏味道

最近由于需要将公司基础架构的组件进行各种兼容,适配以及二开,所以很多时候就需要对组件进行重构,大家是不是在拿到公司老项目老代码,又需要二开或者重构的时候,会头很大,无从下手,我之前也一直是这样的状态,不过在慢慢熟悉了一些重构的思想和方法之后,就能稍微的得心应手一些,下面我就开始讲下重构,然后会着重讲下重构中的SPI接口化。

先给大家看看最近通过使用SPI接口化,重构的一个组件-分布式存储。

重构前的代码结构

好家伙,所有的第三方存储都是写在一个模块中的,各种阿里云,腾讯云,华为云等等,这样的代码架构在前期可能在不需要经常扩展,二开的时候,还是能用的。

但是当某个新需求来的时候,比如我遇到的:需要支持多个云的多个账号上传下载功能,这个是因为在不同的云上,不同账号的权限,安全认证等都是不太一样的,所以在某一刻,这个需求就被提出来了,也就是你想上传到哪个云的哪个账号都可以。

然后拿到这个代码,看了下这样的架构,可能在这样的基础上完成需求也是没有问题的,但是扩展很麻烦,而且代码会越来越繁重,架构会越来越复杂,不清晰。

所以我索性趁着这个机会,就重构一把,和其他同事也商量了下,决定分模块,SPI化,好处就是根据你想使用的引入对应的依赖,让代码架构更加清晰,后续,下面就让我们开始讲讲重构大法~

重构

重构是什么?

重构(Refactoring)就是通过调整程序代码改善软件的质量、性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性。

重构最重要的思想就是让普通程序员也能写出优秀的程序。

把优化代码质量的过程拆解成一个个小的步骤,这样重构一个项目的巨大工作量就变成比如修改变量名、提取函数、抽取接口等等简单的工作目标。

作为一个普通的程序员就可以通过实现这些易完成的工作目标来提升自己的编码能力,加深自己的项目认识,从而为最高层次的重构打下基础。

而且高层次的重构依然是由无数个小目标构成,而不是长时间、大规模地去实现。

重构本质是极限编程的一部分,完整地实现极限编程才能最大化地发挥重构的价值。而极限编程本身就提倡拥抱变化,增强适应性,因此分解极限编程中的功能去适应项目的需求、适应团队的现状才是最好的操作模式。

重构的重点

重复代码,过长函数,过大的类,过长参数列,发散式变化,霰弹式修改,依恋情结,数据泥团,基本类型偏执,平行继承体系,冗余类等

下面举一些常用的或者比较基础的例子:

一些基本的原则我觉得还是需要了解的

  • 尽量避免过多过长的创建Java对象
  • 尽量使用局部变量
  • 尽量使用StringBuilder和StringBuffer进行字符串连接
  • 尽量减少对变量的重复计算
  • 尽量在finally块中释放资源
  • 尽量缓存经常使用的对象
  • 不使用的对象及时设置为null
  • 尽量考虑使用静态方法
  • 尽量在合适的场合使用单例
  • 尽量使用final修饰符

下面是关于类和方法优化:

  1. 重复代码的提取
  2. 冗长方法的分割
  3. 嵌套条件分支或者循环递归的优化
  4. 提取类或继承体系中的常量
  5. 提取继承体系中重复的属性与方法到父类

这里先简单介绍这些比较常规的重构思想和原则,方法,毕竟今天的主角是SPI,下面有请SPI登场!

(编辑:我爱制作网_潮州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读