也说“重构”

“重构”,太火爆的字眼儿了!

“重构”是什么意思?答:Refactor。可答案却远远不只是这几个字母这样简单。

 

有人和我说,“重构”就是在eclipse里右键点击抽象方法,改变量名这些个操作。那对不起了,我并不是在批判谁,但这只是诸多开发工具提供的重构工具而已,它还远远不是“重构”。

“重构”本身,是一种方法,一种思想。

它是一种改善既有代码的方法,提高原有代码的易读性,可重用性,节省后期代码的维护成本,在提升代码本身质量的同时,在一定程度上提升程序的效率。比方说,改掉代码中糟糕的匈牙利命名法;比方说,将反复出现的代码抽象成方法;再比方说,消灭掉代码中的循环交互……

当然,这些东西我们可以借由重构工具,右键点击的方式实现以上操作。可换言之,没有重构工具,这些事不是我们想做,也应该做的么?

 

另外,“重构”之所以是一种方法,因为它本身是一种思想。一种改善的思想。

 

重构与设计是互补的,程序应该是先设计,而在开始编码后,设计上的不足可以用重构来弥补.但一颗“重构”的心,可以帮助我们规避掉诸多在设计中出现的不足。换言之,它的存在不完全是为了改善既有代码的质量,最完美的状态应该是在软件的设计阶段就将这种思想应用其中,而不是先做出一番糟糕的设计,写出一堆糟糕的代码,再去重构。

在编程伊始,我们就应该考虑“重构”的问题,将代码本身的复用性、易读性,以及后期的维护成本考虑其中。进而也会大幅的缩短开发周期,也节省了后期维护的时间。这也就是好的设计与糟糕设计之间的差别所在。

 

还有人和我说,“SOA”、“云计算”、“敏捷”、“重构”等等都不过是空谈,不过是一群专家教授拿出来炒得李郊外嫩的概念,虚无缥缈的技术理念而已。对,仅此而已,我们不需要这样的概念!但也不仅此而已。

我的确承认包括重构在内的这些概念,都有人在不停的提出新理念,而且是单纯的提出理念,毫无实际应用的价值,往往忽略了这些概念存在的意义是什么!

矫枉过正,将某些东西追求到一定程度上,往往会适得其反。有位“大神”和我说,所有的方法长度不应该超过五行代码,我的回答是,你可以去死了!

一切状态只要适合就好,不对么?

 

我们需要的重构的思想,而不是它的概念。拥有一颗“重构”的心,然后去寻找一种思想和应用之间平衡的最佳状态。至于,砖家的概念——Up yours!

 

综上所述,为什么要有重构?

有些代码难以阅读的程序,难以修改;

在添加新行为时需要修改现有的代码,难以修改;

程序中带复杂条件逻辑的程序,难以修改;

诸多逻辑重复的程序,难以修改。

 

“重构的”状态大概会是个什么样子,或者说它的目标是什么?

 

使代码容易阅读;

逻辑只出现在唯一指定的、合适的地点;

低冗和度,新的改动不会危及现有的行为;

尽可能简单的表达条件逻辑。

 

(或者你也可以说,我所说的也是空谈!我同样要说声谢谢!因为我觉得我写的也是空谈,因为我也在摸索,也在尝试,也同样拿不出一个合理有力的“重构”状态来证明我以上的言论。但归根结底,一切适合就好,“重构”是其中之一!)

posted on 2011-10-27 10:18  菜刀Charlie  阅读(1544)  评论(6编辑  收藏  举报