重构——程序猿的艺术

2020-01-08  本文已影响0人  橙味菌

何为重构

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

重构就是让代码易于程序猿理解。在重构的世界里代码是写给程序猿看的而非写给机器看,我们会忽视性能而专注于让代码对程序猿更友好(先让代码跑通,再去重构,最后才考虑性能优化)

为什么要重构

重复一遍:

重构时机 好处
添加功能前 更易扩展
改bug前 更易找出bug
评审代码时 加深理解

怎么重构

看图:

第一步 建立测试框架

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

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

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

第二步 寻找代码坏味

代码坏味(Bad Smell),出自《重构——改善既有代码的设计》的作者,作者认为代码的不合理设计就像婴儿的尿布散发出来的Bad Smell一样,当你闻到它的时候,就应该警惕:该给代码换尿布了

我们要重构代码,首先要找出需要重构的地方,作者总结了几种特殊“味道”的Bad Smell,我把它写在了【怎么重构】的下面(代码坏味)

第三步 代码重构

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

第四步 测试

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

重构可不是写Bug

代码坏味

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

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

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

重构手段

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

技术不分领域,思想一脉相承,欢迎访问橙味菌的博客
本文由博客一文多发平台 OpenWrite 发布!

上一篇 下一篇

猜你喜欢

热点阅读