重构改善既有代码的设计 (pdf+epub+mobi+txt+azw3)

2.jpg

第3章 代码的坏味道


——Kent Beck和Martin Fowler

“如果尿布臭了,就换掉它。”——语出Beck奶奶,讨论抚养小孩的哲学

现 在,对于重构如何运作,你已经有了相当好的理解。但是知道“如何”不代表知道“何时”。决定何时重构、何时停止和知道重构机制如何运转一样重要。

难题来了!解释“如何删除一个实例变量”或“如何产生一个继承体系”很容易,因为这些都是很简单的事情。但要解释“该在什么时候做这些动作”就没那么顺理成章了。除了露几手含混的编程美学(说实话,这就是咱这些顾问常做的事),我还希望让某些东西更具说服力一些。

去苏黎士拜访Kent Beck的时候,我正在为这个微妙的问题大伤脑筋。也许是因为受到刚出生的女儿的气味影响吧,他提出用味道来形容重构时机。“味道,”他说,“听起来是不是比含混的美学理论要好多了?”啊,是的。我们看过很多很多代码,它们所属的项目从大获成功到奄奄一息都有。观察这些代码时,我们学会了从中找寻某些特定结构,这些结构指出(有时甚至就像尖叫呼喊)重构的可能性。(本章主语换成“我们”,是为了反映一个事实:Kent和我共同撰写本章。你应该可以看出我俩的文笔差异——插科打诨的部分是我写的,其余都是他写的。)

我们并不试图给你一个何时必须重构的精确衡量标准。从我们的经验看来,没有任何量度规矩比得上一个见识广博者的直觉。我们只会告诉你一些迹象,它会指出“这里有一个可以用重构解决的问题”。你必须培养出自己的判断力,学会判断一个类内有多少实例变量算是太大、一个函数内有多少行代码才算太长。

如果你无法确定该进行哪一种重构手法,请阅读本章内容和内封页表格来寻找灵感。你可以阅读本章(或快速浏览环衬页列表)来判断自己闻到的是什么味道,然后再看看我们所建议的重构手法能否帮助你。也许这里所列的“坏味道条款”和你所检测的不尽相符,但愿它们能够为你指引正确方向。

实:Kent和我共同撰写本章。你应该可以看出我俩的文笔差异——插科打诨的部分是我写的,其余都是他写的。)

我们并不试图给你一个何时必须重构的精确衡量标准。从我们的经验看来,没有任何量度规矩比得上一个见识广博者的直觉。我们只会告诉你一些迹象,它会指出“这里有一个可以用重构解决的问题”。你必须培养出自己的判断力,学会判断一个类内有多少实例变量算是太大、一个函数内有多少行代码才算太长。

如果你无法确定该进行哪一种重构手法,请阅读本章内容和内封页表格来寻找灵感。你可以阅读本章(或快速浏览环衬页列表)来判断自己闻到的是什么味道,然后再看看我们所建议的重构手法能否帮助你。也许这里所列的“坏味道条款”和你所检测的不尽相符,但愿它们能够为你指引正确方向。

3.1 Duplic


声明:

推书365展示内容收集于网络,仅用于免费的知识分享交流和学习!版权归出版方所有。

如有侵权,请联系本站进行删除,感谢您的理解与包容!

如果您喜欢本站推荐书籍等资源,请支持购买正版,谢谢合作!