Martin Fowler
用一个词来形容作者
Martin Fowler,那就是牛逼!他是作家,演说家,企业应用架构专家,敏捷宣言发起人之一。专注于OO、UML、领域建模和敏捷软件开发。他写的
《重构》出版于1999年,
《企业应用架构模式》出版于2002年,都可以算是程序员必读的书。
Refactoring
对《重构》心仪已久,某天见到同事带了一本到公司,还是英文版的,就马上抢了过来读。这是除了大学教材之外,我第一次完整地读完一本英文技术实体书。读完之后我才发现,网上有个
在线版,内容基本与实体书一致。
全书可以划分为三大部分:第一部分讲解了重构的基础,包括一个例子、一些原则、code smell讲解和如何构建测试;第二部分是重点,讲解了各种重构方法;第三部分是关于重构的其它一些话题,例如大型重构、重构工具等。
整本书读下来,我觉得收益最大的,就是知道了各种各样的 code smell 和相应的重构解决方法。以后在写新代码时,在一些细节设计上可以规避已知的这些 code smell 问题,提高代码质量。在维护旧代码时,也能记起,哦,这个问题可以用XX方法来重构解决~
要说缺点的话,我觉得作者对每个重构方法都详尽地列出了操作步骤,似乎有些冗长。我不知道是否有人真的完全按照作者的步骤去做重构,反正我一般都没有做得那么细,可能工具的支持比较好吧,Eclipse 的重构功能真的很好用。
本文就不列出那些 code smell 和重构方法了,只记一些重构相关的原则。
什么是重构
重构就是为了让软件更易于理解和维护,对软件的内部结构进行的、不影响外部行为的修改。
这个定义有两个重点:目标是“让软件更易于理解和维护”,所作的修改必须“不影响外部行为”。
为何做重构
- 重构能改进软件设计。随着代码被修改,软件的设计会慢慢退化,会过时。重构能让代码保持其原来的结构。
- 重构让软件更易于理解。我们写代码时总是不考虑代码的后续维护者,致使代码难于理解。
- 重构能帮你找bug。因为重构让代码变得更清晰,清晰的代码更便于发现问题。
- 重构能提高编程效率。重构可能会降低你目前的开发效率,但它能提高你以后的开发效率,物有所值。
何时做重构
- “三振出局”原则:第一次写一段代码,就直接写。第二次又写这段代码,你要皱一下眉头,但还是可以照常写。第三次还是写这段代码,那你就得重构了。
- 当增加功能时,重构。
- 当修 bug 时,重构。
- 做代码审查时,重构。
- 何时不应重构?问题太多的代码,最好直接重写。因为重构的代价很可能比重写还大。
重构的其它一些原则
- 重构的第一步永远都相同:为被重构代码编写一组可靠的自动化测试。人始终会犯错,而测试是避免错误的好方法。注意,必须是“自动化”的测试。
- 重构时应该小步前进,频繁地运行测试,这样当出现问题时就能快速定位。
- 进行重构时,不要增加新功能,反之亦然。
- 用“易于重构”的设计代替“十分灵活”的设计,能让设计简化,降低成本。
- 一般来说,重构都会让程序变慢(例如有更多的方法层级、更多的循环)。但经过重构,代码会更清晰,也就更易于优化性能。
分享到:
相关推荐
标题中的"【EMD重构】.rar"指的是包含EMD重构过程的压缩文件,而"EMD重构函数"是指在处理EMD分解后的IMF分量时使用的特定函数。"IMF变量重构"则是指将分解得到的各个IMF重新组合成原始信号的过程。"tomorrowi4n"可能...
在IT领域,稀疏重构算法是信号处理和数据科学中的一个重要概念,特别是在压缩感知理论(Compressive Sensing, CS)中。压缩感知是一种革命性的理论,它表明,如果一个信号可以用较少的非零元素(即稀疏表示)来描述...
### 重构(Refactoring):改善现有代码的设计 #### 一、重构概念解析 重构(Refactoring)是一种软件工程中的重要技术,它指的是在不改变软件系统外部行为的前提下,通过改进其内部结构来提高代码质量的过程。重构...
《重构:改善既有代码设计》是一本由Martin Fowler所著的经典IT著作,它详细阐述了在软件开发过程中如何通过重构来提升代码质量、可读性和维护性。重构是一种系统性的方法,旨在不改变软件外在行为的前提下,改进其...
资源名:用于信号的EMD、EEMD、VMD分解_vmd重构_故障诊断emd_故障诊断_故障重构_VMD信号重构 资源类型:matlab项目全套源码 源码介绍:用于信号的分解、降噪和重构,实现故障诊断 源码说明: 全部项目源码都是经过...
在本文中,我们将深入探讨基于Matlab的压缩感知(Compressive Sensing,简称CS)重构算法的实现。压缩感知是一种理论先进的信号处理方法,它允许我们以远低于奈奎斯特定理所要求的采样率捕获信号,并能恢复原始信号...
相空间重构是复杂系统动力学研究中的一个重要方法,它通过从单变量的时间序列数据中恢复出系统的多维相空间,从而揭示系统的行为特征。在MATLAB中,我们可以利用各种算法来实现这一过程,以深入理解非线性系统的动态...
三维重构 可以检测有效的系统缺陷,进行缺陷的定位,缺陷体积的测量等,如何进行三维重构(3D reconstuction)的输入是各种三维以下的数据,比如纯二维的RGB图像(序列)、带有深度信息的RGBD数据等,出来的是三维...
在电力系统领域,33节点系统重构是一种针对配电网优化设计的方法,主要应用于小型到中型的配电网络。本文将详细解析33节点系统重构的实现过程及其在IEEE-33节点配电网中的应用。 首先,33节点系统通常代表一个具有...
重构是软件开发过程中的一个重要环节,它关注于改善已有代码的设计,以提高代码的可读性和维护性,同时保持原有功能不变。通过重构,程序员能够更有效地管理代码,提升开发效率,减少错误,并促进团队成员之间的沟通...
Addison-Wesley Professional出版社出版的《重构与模式》一书,正是从理论和实践两个层面探讨了重构和设计模式的结合应用。 重构是一种编程技巧,它允许开发者在不改变软件外部行为的前提下,改善软件内部结构。...
配电网重构是电力系统领域中的一个重要研究课题,它涉及到电力系统的稳定运行与经济效率。配电网重构的目标是在满足一系列约束条件下,通过改变开关状态,优化网络结构,以达到提高供电可靠性、降低运营成本、改善...
在这个主题中,"POD.rar_POD 重构_POD正交分解_we75t_本征正交分解_流场重构" 提到了一种名为“主成分分析”(Principal Component Analysis,PCA)在流体力学中的应用,通常称为“正交分解”(Proper Orthogonal ...
《重构——改善既有代码设计》是软件工程领域的一部经典著作,作者Martin Fowler,该书与《设计模式》被并称为软件工程的双雄。《重构》一书的主旨在于向读者展示重构的过程与方法,即通过一系列小的、有步骤的改变...
### 《从Java到Kotlin:重构指南》关键知识点总结 #### 一、书籍概述与目标读者 本书《从Java到Kotlin:重构指南》由Duncan McGregor与Nat Pryce共同编写,是一本专为已经熟悉Java编程语言并希望将其现有代码转换...
一直很喜欢重构这本书,但是由于自己记性不太好,书看过之后其中的方法总是记不住,于是想如果有电子版的重构书就好了,工作中遇到重构的问题可以随时打开查阅。在网上搜索了许久,发现重构这本书有英文chm版本的,...
本文将深入探讨如何利用ZYNQ实现PL动态重构这一关键技术,旨在提升系统的灵活性和效率。 动态重构是指在系统运行过程中,根据需求变化对硬件结构进行重新配置,从而实现不同功能或者优化性能。在ZYNQ平台上,这种...