写点什么

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:528276
用户头像

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

关注

评论

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

一文看懂数据云平台的“可观测性”技术实践

科技热闻

【换模型更简单】如何用 Serverless 一键部署 Stable Diffusion?

Serverless Devs

云计算 Serverless AIGC

SaaS 产品如何选择设计协作工具?

CODING DevOps

敏捷 设计 SaaS CoDesign 团队协作工具

在研制带处理器的电子产品时,如何提高抗干扰能力和电磁兼容性?

华秋PCB

电磁 电路 处理器 控制器 抗干扰

火山引擎DataLeap:3步打造“指标管理”体系,幸福里数据中心是这么做的

字节跳动数据平台

大数据 字节跳动 数据管理 指标管理 数据研发

行业分析| 快对讲-融合会议的应用

anyRTC开发者

音视频 视频会议 快对讲 融合会议 电话会议

Web3和低代码开发:下一代Web应用开发的合作与创新

加入高科技仿生人

前端 Web 低代码

城市开发者平台:程序员成长和创新的“家园”

华为云开发者联盟

云计算 华为云 华为云开发者联盟 企业号 5 月 PK 榜

DevOps 的道术法器,探寻 DevOps “立体化”实践之旅

CODING DevOps

DevOps 软件工程 CODING DevOps

火山引擎DataTester分享:A/B实验中常见的8个错误

字节跳动数据平台

架构实战-毕业设计

程序员小张

「架构实战营」

实践「容器镜像扫描」,Get 云原生应用的正确打开方式

极狐GitLab

Docker DevOps 云原生 DevSecOps 容器镜像

ChatGPT:DevSecOps 落地实践的最后一公里

极狐GitLab

DevOps 云原生 Code Review DevSecOps ChatGPT

AE插件 真实地图路径绘制GEOlayers 3 Mac v1.5.7

真大的脸盆

Mac Mac 软件 AE插件 地图路径插件

软件测试/测试开发丨Python学习笔记之基本数据类型与操作

测试人

Python 软件测试 测试开发 数据类型

如何用一行代码实现监测 OpenAI,大幅提升使用体验

Yestodorrow

可观测性 用户体验 应用性能 ChatGPT

iTubeGo YouTube Downloader 快速下载视频~

真大的脸盆

Mac 视频下载 网页视频下载 Mac 软件 下载视频

车载手势识别技术:未来交通的革命性解决方案

来自四九城儿

腾讯安全携手行业伙伴,详解攻击面管理(ASM)技术的“拓客”潜力

Geek_2d6073

低代码开发——进最热的赛道,啃最硬的骨头

引迈信息

前端 低代码 快速开发 JNPF

SRE方法论之拥抱风险

不思jo

#运维

Makefile常用命令详解

小万哥

c++ 程序员 面试 后端 makefile

教你使用Feign替换RestTemplate

做梦都在改BUG

量化交易系统开发——现货策略

薇電13242772558

量化策略

软件测试丨Python学习笔记之内置库科学计算、日期与时间处理

测试人

Python 软件测试 测试开发

大家都在用的6大类18款企业协同办公软件盘点

爱吃小舅的鱼

项目管理软件 研发管理软件 文档协同软件

Vue3迎来升级,全面助力企业数字化转型

引迈信息

融云跨平台 SDK 自动生成技术的探索和实践

融云 RongCloud

sdk 融云 办公效率 通讯 图片资源

腾讯云首发多款领先新品,TDSQL全新特性助力国产化替代提速

科技热闻

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