写点什么

31 天重构指南

  • 2009-09-06
  • 本文字数:591 字

    阅读完需:约 2 分钟

代码重构(refactoring)是指在保持程序外部表现不变的情况下改变其内部实现的做法。重构的目标主要是改进程序的内部质量,例如增加代码可读性,简化代码结构,增强可维护性、性能或扩展性。即使初期设计得再合理,但由于软件发展本身不可能是完美的,因此重构作为改进代码质量的手段,会持续运用在在软件开发过程中。

重构领域最著名的资源莫过于 Martin Fowler 所著的《重构:改善既有代码的设计》,此外,Martin 还维护了一个重构资源站点,用于随时补充重构有关的信息资料。

八月份, Sean Chambers 在博客中编写了一系列描述重构方式的文章。Sean 指出,这些重构方式主要来源于 Martin 的重构资源站点、代码大全(第二版)以及平时由他自己收集的互联网资源,他的目的是为各种重构方式提供了一些额外的描述及相关的讨论。

以下是这 31 篇文章列表:

  1. 封装集合
  2. 移动方法
  3. 提升(pull up)方法
  4. 降低(push down)方法
  5. 提升字段
  6. 降低字段
  7. 改名(方法,类,参数)
  8. 使用委派代替继承
  9. 提取接口
  10. 提取方法
  11. 使用策略类
  12. 分解依赖
  13. 提取方法对象
  14. 分离职责
  15. 移除重复内容
  16. 封装条件
  17. 提取父类
  18. 使用条件判断代替异常
  19. 提取工厂类
  20. 提取子类
  21. 合并继承
  22. 分解方法
  23. 引入参数对象
  24. 分解复杂判断
  25. 引入契约式设计
  26. 避免双重否定
  27. 去除上帝类
  28. 为布尔方法命名
  29. 去除中间人对象
  30. 尽快返回
  31. 使用多态代替条件判断

Sean 表示,他打算将这些重构内容制成电子书发布在 LosTechies 网站上。如果您对这些重构方式感兴趣,可以下载代码并做进一步的尝试。

2009-09-06 11:528610
用户头像

发布了 157 篇内容, 共 62.2 次阅读, 收获喜欢 6 次。

关注

评论

发布
暂无评论
发现更多内容

从React源码分析看useEffect

goClient1992

React

发力新市民圈层,银行系消费金融这半年都有哪些行动?

易观分析

金融 银行

一天梳理完React所有面试考察知识点

beifeng1996

React

你需要的react面试高频考察点总结

beifeng1996

React

Cox 比例风险回归模型

heart_6662

11月月更 cox 生存分析 生物信息学

如何做好线上服务质量保障?

老张

软件测试 质量保障

前端打工人的面试总结

loveX001

JavaScript

数据库的体系结构

阿泽🧸

数据库 11月月更

2022-11-07:给你一个 n 个节点的 有向图 ,节点编号为 0 到 n - 1 ,其中每个节点 至多 有一条出边。 图用一个大小为 n 下标从 0 开始的数组 edges 表示, 节点 i 到

福大大架构师每日一题

算法 rust 福大大

计算机网络:随机访问介质访问控制之ALOHA协议

timerring

计算机网络 11月月更 ALOHA

数据湖(二十):Flink兼容Iceberg目前不足和Iceberg与Hudi对比

Lansonli

数据湖 11月月更

前端面试中小型公司都考些什么

loveX001

JavaScript

Vue自定义指令(一)初识

Augus

vuejs 11月月更

深入理解Metrics(一):Gauges

冰心的小屋

Java metrics Guages

3分钟快速掌握Go语言正/反向代理的姿势

有态度的马甲

从输入URL到渲染的完整过程

loveX001

JavaScript

一道React面试题把我整懵了

beifeng1996

React

极客时间运维进阶训练营第一周作业

LiaoWD

dokcer

React源码分析8-状态更新的优先级机制

goClient1992

React

算法题学习---链表中的节点每k个一组

桑榆

算法题 11月月更

docker-compose下的java应用启动顺序两部曲之二:实战

程序员欣宸

Docker Docker-compose 11月月更

有赞算SaaS平台吗?

产品海豚湾

产品经理 SaaS 产品运营 B端产品 11月月更

从输入URL到渲染的过程中到底发生了什么?

loveX001

JavaScript

React源码分析8-状态更新的优先级机制

goClient1992

React

DevOps|乱谈开源社区、开源项目与企业内部开源

laofo

DevOps 研发效能 工程效率

【炫丽】从0开始做一个WPF+Blazor对话小程序

沙漠尽头的狼

Java中的递归详解

共饮一杯无

Java 递归 11月月更

Java中的泛型详解

共饮一杯无

Java 泛型 11月月更

随机森林-机器学习中调参的基本思想

烧灯续昼2002

Python 机器学习 算法 随机森林 11月月更

从异步讲起,『函数』和『时间』该作何关系?

掘金安东尼

前端 11月月更

前端工程师的20道react面试题自检

beifeng1996

React

31天重构指南_研发效能_赵劼_InfoQ精选文章