InfoQ

新闻

31天重构指南

作者 赵劼 发布于 2009年9月6日 上午11时52分

社区
.NET,
Agile
主题
质量交付
标签
持续改进,
重构

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

8,使用继承替换委派 的 翻译错误 发表人 策 商 发表于 2009年9月6日 下午8时10分
Re: 8,使用继承替换委派 的 翻译错误 发表人 Gavin Zhang 发表于 2009年9月6日 下午10时6分
Re: 8,使用继承替换委派 的 翻译错误 发表人 李 富足 发表于 2009年9月7日 上午1时21分
Re: 8,使用继承替换委派 的 翻译错误 发表人 Gavin Zhang 发表于 2009年9月7日 上午1时22分
Re: 8,使用继承替换委派 的 翻译错误 发表人 Jeffrey Zhao 发表于 2009年9月7日 上午9时25分
  1. 返回顶部

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

    2009年9月6日 下午8时10分 发表人 策 商

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

  2. 返回顶部

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

    2009年9月6日 下午10时6分 发表人 Gavin Zhang

    呵呵,不错,翻译有误

  3. 返回顶部

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

    2009年9月7日 上午1时21分 发表人 李 富足

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

  4. 返回顶部

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

    2009年9月7日 上午1时22分 发表人 Gavin Zhang

    后来改的吧

  5. 返回顶部

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

    2009年9月7日 上午9时25分 发表人 Jeffrey Zhao

    没错,是后来改的。

深度内容

模块化Java:声明式模块化

本文是模块化Java系列文章的第4篇,介绍的是声明式模块化。文中描述了组件如何以声明的方式来定义并组织在一起,而无需让代码依赖于OSGI API。

Ian Robinson和Jim Webber谈论基于Web的整合

本采访是在伦敦举行的QCon2009上记录的,Ian Robinson和Jim Webber探讨了如何将Web作为整合平台以及REST在理论上和实践中的好处。

项目管理修炼之道(精选版)

项目管理对于项目成败至关重要,但实践中每个项目都有自己的独特性,没有现成的解决方案可以套用。书中从应对实际风险的角度出发,讲述了从项目启动、项目规划到项目结束的整个管理流程,展示了作者的思考过程。本迷你书从原书中精选出5个章节。

那是鸟,还是飞机?不,那是超人!

在这个演讲中,Fred将会揭示敏捷的一些外在因素,并会重点关注敏捷获得成功的内在原因。从案例研究和真实的项目经验来看,Fred认为:工具、管理体系都不能让你变得敏捷。敏捷的成功,植根于士气高涨、充分授权的工作者身上,他们能够以不同以往的方式思考问题。

访谈和书摘:Eben Hewitt的新书《Java SOA Cookbook》

Java SOA Cookbook

Eben Hewitt的新书《Java SOA Cookbook》从Java实现的角度讨论了面向服务架构。Eben在书中讨论了SOA基础、工具、最佳实践和SOA治理等主题。

Mark Richard的《Java消息服务》第二版

Mark Richards的新书《Java消息服务》第二版覆盖了JMS的许多主题, 包括发布和订阅模式以及点对点模式,消息过滤和事务等。InfoQ与Mark谈论了跟他的新作。

模块化Java:动态模块化

本文是“模块化Java”系列文章的第三篇,讨论动态模块化,内容涉及如何解析bundle类、bundle如何变化、以及bundle之间如何通信。

让测试也敏捷起来

对于测试组织来说,敏捷方法带来的快速迭代却让测试本身变得困难起来:缺乏“足够详细的文档”,缺乏“仔细设计用例的时间”等等。在本演讲中,段念将与大家探讨如何在敏捷过程中进行测试。