


作者:[美] 马丁·福勒(Martin Fowler)著 伟山育琪 译
定价:149元
印次:1-1
ISBN:9787302699798
出版日期:2025.10.01
印刷日期:2025.09.28
图书责编:申美莹
图书分类:零售
"书中清晰揭示了重构的过程,解释了重构的原理和实践方式,并给出了何时以及何地应该开始挖掘代码以求改善。书中给出了60多个可行的重构,每个重构都介绍了一种经过验证的代码变换手法的动机和技术。本书提出的重构准则将帮助开发人员一次一小步地修改代码,从而减少了开发过程中的风险。 本书适合软件开发人员、项目管理人员等阅读,也可作为高等院校计算机及相关专业师生的参考读物。依次解释什么是重构,为什么要重构,如何通过“坏味道”识别出需要重构的代码,以及如何在实践中成功实施重构(无论用的是什么编程语言)。 ● 理解重构的过程和重构的基本原则; ● 快速有效地应用各种重构手法,提升程序的表达力和可维护性; ● 识别代码中能指示出需要重构的地方的“坏味道”; ● 深入了解各种重构手法,每个手法都包含解释、动机、做法和范例4 个部分; ● 构建稳固的测试,以支持重构工作的开展; ● 理解重构过程的权衡取舍以及重构存在的挑战等。 本书凝聚了软件开发社区专家多年摸索而获得的宝贵经验,书中所蕴涵的思想和精华,值得反复咀嚼,而且往往能够常读常新。 "
马丁·福勒,马丁?福勒(Martin Fowler) 软件开发大师,ThoughtWorks 科学家。他是一位作家、演说者、咨询师。他致力于改善企业级的软件设计,对设计以及支撑设计的工程实践孜孜以求。他在重构、面向对象分析设计、模式、XP 和UML 等领域都有贡献,著有《重构》《分析模式》《领域特定语言》等经典著作。 译者简介 熊节 在IT 行业已经打拼了18年,在金融、零售、政府、电信、制造业等行业的信息化建设方面有着丰富经验,是中国IT业敏捷浪潮的领军人物。熊节拥有利物浦大学MBA学位。 林从羽 ThoughtWorks软件开发工程师,曾服务于国内外多家大型企业,致力于帮助团队更快更好地交付可工作的软件。拥抱敏捷精神,TDD爱好者,纯键盘工作者。
第一版前言 “重构”最初是在Smalltalk圈子中构思出来的,但不久之后就进入了其他编程语言的阵营。由于重构是框架开发不可或缺的一部分,因此“框架工作者”在谈论他们的技术时,经常会提到“重构”一词。当他们改进类层次结构时,当他们需要删除多少行代码时,都会提到这个术语。框架工作者深知,好的框架不是一蹴而就的—随着经验的积累,框架需要不断地进行优化和调整。他们还知道,代码的读取和修改频率高于新代码的编写频率。保持代码可读性和易修改性的关键就是重构—特别是对于框架而言。当然,对于一般软件而言也是如此。 那么,重构有什么弊端吗?当然,“重构是有风险的”。它需要修改代码,这可能会引入细微的Bug。如果重构做得不正确,可能会导致代码回滚到数周之前的版本。此外,非正式或临时实施重构时,风险会更大。重构是基于对代码的深入研究的,研究的过程中你会发现待重构的点,研究越深入,发现的待重构的点就越多……做出的改变也就越多。最终,你会陷入一个无法自拔的深渊。为了避免自掘坟墓,必须系统地进行重构。当我和合著者撰写《设计模式》时,曾提到:“设计模式为重构提供了目标。”但是,确定目标只是问题的一部分;转换代码以达到目标则是另一个挑战。 Martin Fowler和其他作者通过阐明重构过程,为面向对象的软件开发做出了宝贵的贡献。本书解释了重构的原则和最佳实践,并指出了何时何地应该开始深入研究代码以改进它。本书的核心是一份全面的重构目录。每个重构都描述了经过验证的代码转换的动机和做法。一些重构手法(例如提取方法或移动字段)可能看起来会很明显。 理解此类重构的机制是以规范的方式进行重构的关键。本书中...
第 1 章 重构-入门示例 1
1.1 示例介绍 2
1.2 对示例代码的评价 4
1.3 重构的前提:单元测试用例 5
1.4 分解statement函数 5
1.5 阶段性展示:大量函数嵌套 18
1.6 模块化拆分:计算模块与输出模块 19
1.7 阶段性展示:两阶段文件隔离 26
1.8 多态:按类型封装计算逻辑 28
1.9 阶段性展示:多态下的计算模块 34
1.10 本章小结 35
第 2 章 重构的原则 37
2.1 什么是重构 38
2.2 重构:身兼双职 39
2.3 重构的意义 39
2.4 重构的时机 41
2.5 重构的挑战 45
2.6 重构、架构和Yagni 49
2.7 重构与更广泛的软件开发过程 50
2.8 重构与性能 51
2.9 重构的起源 53
2.10 自动化重构 54
2.11 延伸阅读 56
第 3 章 代码中的“异味”(重构的信号) 57
3.1 神秘的命名 58
3.2 重复代码 59
3.3 函数过长 59
3.4 参数列表过长 60
3.5 全局数据 60
3.6 可变数据 61
3.7 发散性变化 62
3.8 霰弹式修改 62
3.9 依恋情结 63
3.10 数据泥团 63
3.11 基本类型偏执 64
3.12 重复的switch语句 64
3.13 循环 65
3.14 冗赘的元素 65
3.15 夸夸其谈通用性 65
3.16 临时字段 65
3.17 过长的调用链 66
3.18 中间人 66
3.19 内幕交易 66... 查看详情

