重构——程序猿的艺术

第一步 建立测试框架

测试框架是判断重构成功与否的关键,再重复一遍:

重构:在不改变软件对外表现和行为的前提下修改已有代码使其易于理解,便于扩展

重构不能改变代码对外的表现和行为,测试框架正是要测试重构是否改变了代码的对外接口,如果不能通过测试,必须对重构进行修复(回滚到重构之前)

第二步 寻找代码坏味

第三步 代码重构

使用针对代码坏味的重构手段对其进行重构即可

第四步 测试

使用第一步建立的测试框架对重构进行测试

重构可不是写Bug

代码坏味

我只收录了《重构——改善既有代码的设计》中一部分常见的代码坏味,更多的请查看原书

我极力推荐给大家这本书:世界软件开发大师Martin Fowler的《重构——改善既有代码的设计》

坏味 表现 对应的重构手段
重复代码块 相同代码重复出现 抽取方法
方法过长 方法体长度超过30行 抽取方法
方法参数过多 方法所需的参数超过3个 使用对象封装参数集
临时变量存在 代码中有临时变量 使用查询方法取代临时变量
switch语句存在 代码中有switch分支 使用多态取代switch分支
类过长 类的长度超过100行 转移成员变量和函数
抽取类
发散式变化 引发一个类修改的原因不只一个 抽取类
发散式修改 一个类修改,引发修改的其他类不止一个 抽取类
数据依赖&过度亲密 一个类过多调用另一个类的成员和函数(甚至超过了拥有成员和函数的类) 转移成员变量和函数

重构手段

等我把这些文章全写完发了,再给你们提供链接

  • 抽取方法

    到处都是重复的代码法体又臭又长看不懂来试试抽取方法(Extract Method)吧,保证药到病除!

  • 使用对象封装参数集

    答应我,别再给方法弄一长溜的参数了,好吗/p>

  • 使用查询方法取代临时变量

    你这方法里怎么这么多临时变量完全记不住每个变量是用来干什么的!

  • 使用多态取代switch分支

    “来看看外包老哥写的超长switch语句”这种文章又登上首页了

  • 及时打断if条件分支

    外包老哥总是被黑的幕后黑手找到了!

  • 转移成员变量和函数

    道理我都懂,可是你一直在用的成员变量为什么要让我负责管理/p>

  • 抽取类

    总觉得,是时候new一个替身出来帮我干活了

  • 将数据的处理函数转移给持有数据的类

    或许,这个锅应该由你来背

  • 向父类转移成员变量和函数

    所有子类都需要做的事,为什么不让父类直接做了/p>

  • 注意集合型成员变量的get/set方法!

    有人动了我的集合对象,可是我却不知道!

文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览91435 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年1月6日
下一篇 2020年1月6日

相关推荐