阿里云飞天发布时刻,领先大模型限免,超7000万 tokens免费体验 了解详情
写点什么

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

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

关注

评论

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

CI/CD制作流程

wong

Docker jenkins ansible kubenetes

一文带你看懂分布式软总线在家庭场景的应用

HarmonyOS开发者

HarmonyOS

利用闭包实现自定义等待方法

FunTester

多线程 并发测试 闭包 FunTester 自定义等待

深入解析QUIC协议

拍乐云Pano

WebRTC RTC QUIC QUIC协议

java开发之内存模型面试分享

@零度

JAVA开发 Java内存模型

Avue中如何对option中属性动态赋值

泉城老铁

前端 avue

尚硅谷Docker与微服务实战教程发布

@零度

大数据 dokcer

运维工程师必备利器|一招实现运维智能化!

云智慧AIOps社区

运维 AIOPS 运维工程师 基础知识 自动化运维

一键抠除路人甲,昇腾CANN带你识破神秘的“AI消除术”

华为云开发者联盟

CANN 昇腾 图像消除 智能实例分割 CRA算法

数据分析人员需要掌握SQL到什么程度?3个常考题目刷一刷

博文视点Broadview

web技术分享| web的白板工具栏封装

anyRTC开发者

前端 Web 音视频 视频会议 白板

译文丨伯克利对serverless的看法:简化云编程

华为云开发者联盟

Serverless 云编程 伯克利 无服务器计算 云函数

工作中遇到的50个JavaScript的基础知识点

Sunshine_Lin

面试 前端 进阶 基础

ADmobile首席架构师王威:广告业务云上运维最佳实践

阿里云弹性计算

阿里云 弹性计算 年度峰会

ReactNative进阶(四):ReactNative 原理剖析之JS 层渲染 diff 算法

No Silver Bullet

React Native 渲染性能 1月月更

阿里云万郁香:多样付费选择构筑成本最优的弹性体验

阿里云弹性计算

阿里云 年度峰会 付费方式

自动驾驶训练如火如荼,网络带宽跟不上怎么破?

焱融科技

人工智能 自动驾驶 云计算 高性能 文件存储

据说有人面试栽在了Thread类的stop()方法和interrupt()方法上

华为云开发者联盟

高并发 crud Thread类 stop interrupt

[转]注释驱动的 Spring cache 缓存介绍

kimmking

Linux之文件属性详解

入门小站

Linux

明道云虹桥演示中心,欢迎进店!

明道云

阿里云刘强:无影云电脑构建云上安全办公室

阿里云弹性计算

弹性计算 年度峰会 无影云电脑

湖仓一体天花板,大数据一站式SQL分析技术实践

华为云开发者联盟

大数据 HetuEngine 湖仓一体 SQL分析 华为云FusionInsight

Kafka往事——揭露Kafka推出Kafka Streams背后原因

Kafka中文社区

netty系列之:真正的平等–UDT中的Rendezvous

程序那些事

Java Netty 程序那些事 1月月更

Avue复选框动态赋值不能渲染问题解决方式

泉城老铁

前端 avue

开源走向世界(上):开源构建全球化的舞台丨BDTC 2021

PingCAP

Apache Oozie学习笔记(一)

恒生LIGHT云社区

大数据 hadoop 工作流 调度

前端开发代码区域规范分享

@零度

前端开发 代码规范

【LeetCode】 替换所有的问号Java题解

Albert

算法 LeetCode 1月月更

Kubernetes生态,从繁荣走向碎片化

巨子嘉

容器 云原生

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