本节书摘来自异步社区《重构:改善既有代码的设计》一书中的第1章,第1.5节结语,作者【美】Martin Fowler,更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.5 结语
这是一个简单的例子,但我希望它能让你对于“重构怎么做”有一点感觉。例中我已经示范了数个重构手法,包括Extract Method (110)、Move Method (142)、Replace Conditional with Polymorphism (255)、Self Encapsulate Field (171)、Replace Type Code with State/Strategy (227)。所有这些重构行为都使责任的分配更合理,代码的维护更轻松。重构后的程序风格,将迥异于过程化风格——后者也许是某些人习惯的风格。不过一旦你习惯了这种重构后的风格,就很难再满足于结构化风格了。

这个例子给我们最大的启发是重构的节奏:测试、小修改、测试、小修改、测试、小修改……正是这种节奏让重构得以快速而安全地前进。

如果你看懂了前面的例子,就应该已经理解重构是怎么回事了。现在,让我们了解一些背景、原理和理论(好在不太多)。

[1] 本书写作于1999年。十年之后,各种主要的Java IDE都已经提供了良好的重构支持。——译者注

[2] 十年之后的今天,Java在这方面已经有所改进。——译者注

[3] 指的是switch语句内的case子句。——译者注

[4] 如图1-15。——译者注

[5] Ralph Johnson和另外三位先生Erich Gamma、Richard Helm、John Vlissides合写了软件开发界驰名的《设计模式》,人称四巨头(Gang of Four)。——译者注

[6] 程序中的_priceCode。——译者注

[7] 其中有类型相关的行为,也就是“判断是否为新片”那个动作。——译者注

本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

《重构:改善既有代码的设计》—第1章1.5节结语相关推荐

  1. 《重构-改善既有代码的设计》第二章

    文章目录 前言 一.什么是重构? 二.为什么重构 1.改进软件的设计 2.使软件更容易理解 3.重构帮助找到bug 4.重构提高编程速度 三.何时重构 四.重构的难题 五.重构与设计 六.间接层与重构 ...

  2. 重构—改善既有代码的设计

    概述 1.1 参考资料 <重构-改善既有代码的设计>读后总结 <重构改善既有代码的设计> 22种代码的坏味道,一句话概括 1.2 何谓重构 首先要说明的是:视上下文不同,重构的 ...

  3. PHP 杂谈《重构-改善既有代码的设计》之二 对象之间搬移特性

    思维导图 索引: Ø Move Method(搬移函数) Ø Move Field (搬移值域) Ø Extract Class (提炼类) Ø Inline Class (将类内联化,就是把当前的类 ...

  4. 『重构--改善既有代码的设计』读书笔记----序

    作为C++的程序员,我从大学就开始不间断的看书,看到如今上班,也始终坚持每天多多少少阅读技术文章,书看的很多,但很难有一本书,能让我去反复的翻阅.但唯独『重构--改善既有代码的设计』这本书让我重复看了 ...

  5. PHP 杂谈《重构-改善既有代码的设计》之三 重新组织数据

    介绍 承接上文的PHP 杂谈<重构-改善既有代码的设计>之 重新组织你的函数继续重构方面的内容. 这章主要针对数据的重构. 1.争论的声音--直接访问Field还是通过函数(Accesso ...

  6. 重构 改善既有代码的设计:代码的坏

    以下内容来自<<重构 改善既有代码的设计>> 一.什么是重构 所谓重构(Refactoring)是这样一个过程:在不改变代码外在行为的前提下,对代码做出修改以改进程序的内部结构 ...

  7. 《重构-改善既有代码的设计》-第1例:租赁影片(2)

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 上接  重构-改善既有代码的设计-第1例:租赁影片(1) 2  运用多态取代与价格相关的条件逻辑 2 ...

  8. 《重构-改善既有代码的设计》-第1例:租赁影片(1)

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 买了<重构 - 改善既有代码的设计 >一书,一直没有好好看,大致过了下也觉得只是有点点印 ...

  9. 实践提高《重构改善既有代码的设计第2版》PDF中文+PDF英文+对比分析

    重构是编程的基础,是在不改变外部行为的前提下,有条不紊地改善代码.编程爱好者都知道,Martin Fowler 的<重构:改善既有代码的设计>已经成为全球有经验的程序员手中的利器,既可用来 ...

  10. 重构改善既有代码的设计(github源码)

    refactoring improving the design of existing code(重构改善既有代码的设计) https://github.com/CoderDream/refacto ...

最新文章

  1. 解决 复制虚拟机无法上网 看不到IP地址
  2. mysql的锁表问题
  3. XCTF-Web-高手区-Web_python_template_injection
  4. 未定义标识符 stringc/c++(20)_到 2024 年,阿斯顿·马丁汽车销量的 20%以上将是电动汽车...
  5. C++ dll的隐式与显式调用
  6. C#LeetCode刷题之#258-各位相加(Add Digits)
  7. Pytorch+MINST 全连接神经网路训练学习
  8. activiti 条件表达式json报错_json模块和pickle模块
  9. i5功耗最低的cpu_近年最大飞跃 Intel第11代低功耗酷睿处理器官宣:集显2倍、AI乘4...
  10. MySQL 大表优化方案(长文)
  11. Jexus 配置ssl
  12. Unity 安装Vuforia配置Android时遇到的问题及解决
  13. 04、Flutter FFI 字符串
  14. 微信:item_search_seller - 搜索公众号列表
  15. js绑定onblur事件
  16. led灯串怎么摆造型_一种LED轮廓造型灯的制作方法
  17. 【2018.10.1】「JOI 2014 Final」年轮蛋糕
  18. Blender图解教程:Blender导出Gif的最佳解决方案(附工具下载)
  19. PHP Encoder Ioncube 使用
  20. 云端软件平台(免去重装系统后装软件的烦恼)

热门文章

  1. Java StringBuilder
  2. 给定一个区间寻找三角形_计算给定图片中的三角形数量–程序化解决方案
  3. C++基础介绍,C++基本简介
  4. Nuxt使用cookies踩坑之设置axios的header
  5. DAY09 NETWORK Cisco简单不同网络主机通信
  6. 各个历史版本 cuda toolkit 下载链接
  7. 二叉树的构建--BST
  8. 查看不同用户使用GPU的情况
  9. 深度学习中所有的优化器的详细介绍与列表化对比分析
  10. latex中设置标题左对齐