作者 Vikas Hazrati 译者 贾国清 发布于 2012年2月11日
架构 & 设计,
过程 & 实践, 语言 & 开发 主题
敏捷 ,
设计
标签 重构
重构是一门在不改变软件外部行为情况下,改善既有代码内部结构的一门技术。从表面来看,重构需要引入大量的思考行为,然而,过度地思考同样会产生不利的影响。
Kent Beck提到,重构中面临最大的挑战就是如何做到循序渐进,循序渐进指的是如何将工作分解为可控的步骤,并且每个步骤都易于管理。重构步伐过快会导致不稳定代码的出现。此外,想得越多,越是谨慎反而会严重减慢重构的步伐。
正如许多与我结对编程的伙伴都会告诉你的那样,我有一个非常不招人喜欢的习惯:在重构时总会说“不要再想啦”。我知道这并不是我真正要说的,因为我不可能去故意表达这个意思,但是直到现在,我才有机会可以给出一个更好的解释。
Kent解释了“水平和垂直重构”的概念。垂直重构是指调整方法或代码块在调用堆栈中的上下顺序,然而水平重构则指的是在类似于同级别的对象间所做的调整。依Kent所述,重构时应避免同时做上述两种调整。
当需要重构具有多重调用或是多重实现的对象时,就要额外小心,并且重新回到垂直和水平方法,将这两者操作分开进行,并且要时刻注意代码重构的深度。
话虽如此,做到并不容易⋯⋯
比较好的一个办法就是使用索引卡(Index Cards):
在电脑旁放置索引卡会帮助我保持专注。当我在处理水平重构时突然意识到还可以做垂直重构时,我会迅速记在索引卡上,然后马上回到刚才正在进行的工作中。这种方法不仅可以使我在进行下一步工作前,有效地先将手头的工作结束,同时,又不会导致某些好点子被遗忘。方法之好用,整个过程感觉就像是在做冥想,技能感受到自己的呼吸,又不会被完全自我的意识所牵绊。
J. B. Rainsberger同意这种观点并同时指出:
无论你在做什么,想要专注时,手边准备一张卡片和一支笔。当有奇思妙想突然在脑海中闪现,而这些事情又不需要立刻处理时,就可以用5个或更少的字将它写下来,然后继续回到刚才所作的事情中。效果甚是神奇。
这与Joshua Kerievsky所提倡的Narrow Changem模式非常相似。每次只专注于一小部分的变化点,然后再继续在后续的重构中应用Narrow Change或是Parallel Change原则。
尽管重构中需要思考,但是,保持专注并避免潜在的干扰对良好的重构行为是很有必要的。Kent说道:
我的同伴经常会在重构的过程中产生一些好的想法,比如如何将一些函数挪到B中。这时我就会告诉他停止思考。我真实的目的并不是不想让他去思考,我只想让他专注的把手头的事情先做完。就像我们往墙上钉钉子,钉子才刚钉进去了一半,我们没有理由放下手里的活去钉另外一个。
分享到:
相关推荐
在IT领域,相空间重构是一种重要的..."CC_method.zip"这个压缩包文件包含了与"CC方法"(可能是“Correlation Coefficient”或“Concurrent Causality”的简称)相关的资源,特别是关于"CC参数"的设置和应用...
CC_methodCC法,用于非线性时间序列中,相空间重构,求取时间延迟tau
相空间重构C-C法,含数据 。。
时间序列的相空间重构延迟时间和嵌入维数的CC算法
C-C法重构相空间文件夹说明1,CC_Method_main,不错的
C-C算法求取关联维数和延时时间,代码很好用的哟
2.领域:CC算法 3.内容: 基于CC算法计算信号延迟时间和嵌入维数matlab仿真。CC算法(Cross-Correlation Algorithm)是一种常用的时延估计方法,可以用于计算两个信号之间的延迟时间。在信号处理、通信、生物医学...
配网重构中,很重要的一个约束条件为配网应随时保持开环、辐射的状态: 配电网系统是属于闭环设计但是开环运行的系统,因此,在开关的开闭过程中,随时保持配电网的开环状态时很重要。Mendoza等利用图论,尤其是基本...
而"CC_method"可能是一个MATLAB程序,实现了Cao方法来确定嵌入维数,这在实际操作中是非常有价值的工具。使用MATLAB进行这种计算的好处在于其强大的数值处理能力和可视化功能,使得用户可以直观地理解和分析结果。 ...
1.领域:matlab,CC算法求延迟时间和嵌入维数算法 2.内容:CC算法求延迟时间和嵌入维数+代码仿真操作视频 3.用处:用于CC算法求延迟时间和嵌入维数算法编程学习 4.指向人群:本硕博等教研学习使用 5.运行注意...
重构-改善既有代码的设计 chm 中文版
重构相空间的嵌入维数及时间延迟得C_C算法的MATLAB代码
`www.pudn.com.txt` 文件可能是相关资料的链接或者注释,提供关于小波分析的额外信息,比如理论背景、算法解释、示例代码等。 小波分解和重构的优势在于它们能够同时在时间和频率域内分析信号,这使得它们在处理非...
5. **解耦与重构**:在实践中,你可能会遇到需要将大型模块拆分为多个组件的情况。通过解耦,可以使每个组件更专注于其核心功能,提高代码的可读性和可维护性。同时,解耦也为未来的需求变更提供了更大的灵活性。 6...
在提供的压缩文件中,`www.pudn.com.txt`可能包含的是关于该主题的额外信息或者源数据,而`C-C法重构相空间`可能是用于演示CC法的MATLAB代码或文档。相空间重构是时间序列分析的一个方法,它通过高维映射来表示信号...
对高光谱数据进行1-12层小波分解和重构,并与实测数据相对应进行相关性分析
4. **最终滤波信号**:在筛选出有效IMF后,EMD-cc程序通常会组合这些IMF来重构一个滤波后的信号。这个滤波信号保留了原始信号的主要特征,同时减少了噪声和其他不相关的频率成分。这种基于相关性的方法可以更准确地...
- **易于扩展**:系统可随着工厂规模的扩大而灵活扩展,无需大规模重构。 - **降低风险**:严格的安全机制降低了生产事故的风险,保障了工人和设备的安全。 5. 应用场景 CC-Link Safety广泛应用于汽车制造、...
延迟时间的选择对于构建系统的相空间重构至关重要,因为它决定了如何从单个时间序列构建多个相关的虚拟状态。 计算延迟时间通常使用互信息法或相关系数法,其中C-C方法(即Cao's method)是一种常用的方法。C-C方法...