InfoQ

InfoQ

新闻

我的书签

登录注册 以永久保存书签。

该内容已经被标记书签!

标记书签错误,请重试!

31天重构指南

作者 赵劼 发布于 2009年9月6日

领域
语言 & 开发,
过程 & 实践
主题
敏捷 ,
质量交付 ,
.NET
标签
重构 ,
持续改进

代码重构(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网站上。如果您对这些重构方式感兴趣,可以下载代码并做进一步的尝试。

赵劼 网名为老赵,洋名Jeffrey Zhao,写有技术博客“老赵点滴”。关注前沿技术,并致力于开源社区与微软平台的组合优化。

8,使用继承替换委派 的 翻译错误 发表人 商 策 发表于
Re: 8,使用继承替换委派 的 翻译错误 发表人 Zhang Gavin 发表于
Re: 8,使用继承替换委派 的 翻译错误 发表人 富足 李 发表于
Re: 8,使用继承替换委派 的 翻译错误 发表人 Zhang Gavin 发表于
Re: 8,使用继承替换委派 的 翻译错误 发表人 Zhao Jeffrey 发表于
  1. 返回顶部

    8,使用继承替换委派 的 翻译错误

    发表人 商 策

    使用继承替换委派 原文是 Replace Inheritance with Delegation , 这个翻译是错误的,正相反。

  2. 返回顶部

    Re: 8,使用继承替换委派 的 翻译错误

    发表人 Zhang Gavin

    呵呵,不错,翻译有误

  3. 返回顶部

    Re: 8,使用继承替换委派 的 翻译错误

    发表人 富足 李

    楼上两位,你们错了!原译者是对的!

  4. 返回顶部

    Re: 8,使用继承替换委派 的 翻译错误

    发表人 Zhang Gavin

    后来改的吧

  5. 返回顶部

    Re: 8,使用继承替换委派 的 翻译错误

    发表人 Zhao Jeffrey

    没错,是后来改的。

深度内容

应用云平台的可用性——从新浪SAE看云平台设计

云计算平台的可用性,相比传统互联网服务而言,更加复杂和困难,也更具有挑战性。本文借助新浪SAE云平台为读者讲述了云平台可用性的定义、如何打造高可用的平台,以及对云计算的用户提出了建议。

JVM定制改进 @ 淘宝

淘宝高度重视Java平台的健康发展,组建了一个团队专注于Java平台的底层部分的性能、功能与稳定性改进;工作主要基于OpenJDK中的HotSpot VM开展,其中一些通用的功能随后也会逐渐反馈给OpenJDK社区。希望能与使用Java平台开发应用的大家交流经验。
本次演讲视频录制于QCon杭州2011

"伤得起"的云计算应用——对云端应用之架构的思考

2011年4月21日至22日是值得云计算从业者纪念的日子。Amazon的IaaS服务出现故障,导致许多商业网站的服务中断,影响非常严重。作为云计算用户,我们需要思考的是,如何保证即便在云服务不可用的情况,我们的应用架构仍然能够屹立不倒?本文正是站在云计算用户的角度试图探讨这一问题。

让交付的速度跟上思考的速度

12人的技术团队,4组刀片服务器,每月20亿的访问量,每日1次准时部署,99.9%的可用性。这可能吗?当然。想知道如何做的吗?百姓网将与您分享他们在DevOps实践过程中的经验和技巧。
本次演讲视频录制于QCon杭州2011

架构之路——穿行在产品和业务之间

篱笆作为一家起源于社区的电子商务公司,反映到技术层面就是同时要面对产品和业务,以及经营战略的变化调整。如何在产品和业务的夹缝之间完成技术架构的抽象与平衡,寻找更有效的价值定位,这当中有些经验教训和个人感悟愿与众人分享。
本次演讲视频录制于QCon杭州2011

特性注入:成功三部曲

本文将对特性注入以及相关方法做一个扫盲性的介绍。我们会解释这个框架的关键要素,并附上实例来证实它们。为了让文章保持相对较短,我们不会深入到某个工具或方法中,而是会给出一些参考资料,以便大家做进一步的研究。

解析JDK 7的动态类型语言支持

随着JDK 7的发布,字节码指令集终于迎来了第一位新成员——invokedynamic指令。这条新增加的指令是JDK 7实现“动态类型语言(Dynamically Typed Language)”支持而进行的改进之一,也是为JDK 8可以顺利实现Lambda表达式做技术准备。在这篇文章中,我们将去了解JDK 7这项新特性的出现前因后果和它的意义。

Java Remoting远程服务(下)

随着互联网应用的发展,Java分布式远程服务技术受到越来越多的关注,本文将对各种相关实现以示例的形式逐一介绍,并总结其中的优缺点,使读者能够在技术选型时有所准备。这是文章的下篇。