也说“重构”

发表于:2011-11-11 10:27

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:菜刀Charlie    来源:51Testing软件测试网采编

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  使代码容易阅读;

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

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

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

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

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号