代码重构之路的艰辛

此文属转载,原文链接:http://www.cnblogs.com/viter/archive/2010/11/03/1868377.html

正文如下:

 

我承认,这个标题很沉重。我有幸使用了一个开源的项目作为小范围内的二次开发应用。这个项目其实是挺大的,开源代码仅是其中一部分,在二次开发中我对源代码作了一些改进,都是一些必要的改进以及发现的BUG;这些BUG在后续的开源参与者一一修复。我想说的是重构过程中的一些小问题。

一、如果你决定重构代码,特别是别人的代码,最好对整个项目有一个清晰的认识,最好记得哪些代码运行在哪些文件中的哪一行里(基于没有BUG即良好的思想,你可不重构)。我很反感以下的代码。 
boo _flag=false
boo _isexists=false
string _username;

上面的代码不用多说,大家也可以看出问题,当然这些简单的重构我相信初学者都可以改好,其实这是习惯问题,有时候是:习惯决定行为,行为决定思想,思想决定高度。至少在这里我看不出什么高度可言了。

二、尽量不要去动那些核心的代码。这里所指的核心是:搞不好程序就当掉了。如果你真要没事想重构以显示你的能耐,我劝你还是考虑一下“没有BUG不要修改”的原则。我上一次对一个程序的核心代码(绝对是核心)修改前,花了一个星期去阅读所有文档和代码,虽然之前我已对所有文档和代码看过无数次。

三、如果真要进行重构,那么最好让所有项目组成员都知道。不要以为你重构一点点功能而已,不影响什么东西;如果你不认同这一条,那么请回忆一下中国移动的广告:沟通无限。相信我,作为项目组的一员,他们是非常有必要和需要知道你正在动他们的奶酪的。

四、记得作代码签入注释。我对那种不写注释的人,有想痛扁他一顿的冲动。

五、让他人介入。重构前或者重构后,让你的同事或者上级审阅你的代码,如果你写得很好,也是一种享受;当然,如果你写得很烂,也算得到了指点。

六、重构前,试试测试驱动开发。我从来不在真正的项目中直接切入重构,因为我不能预料到我的切入是否正确,那种感觉就像是,让我不穿衣服的站在街上的那么的窘迫。也许你想找环境的借口;不,我告诉你,环境都是人搭建的,搭建环境是相当不费事的,至少我还没有怎么费事。

七、学会宽容和理解。重构之人火气通常都比较大,当然,你也许可以采用让被重构者请你喝杯咖啡来缓解紧张的气氛。

八、没事不要老打重构的主意。


  最后一条我觉得是非常重要的一条,如果你没事老重构的主意,那只能说明一点,你写的很烂;或者你认为其它人写得都没有你高明。相信我,这绝对是没事找抽型的。

作者:老米

出处:http://www.cnblogs.com/viter/

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

时间: 2024-09-20 00:42:17

代码重构之路的艰辛的相关文章

复杂而艰辛的重构之路--起步

你有没有试过,当你踏入一个新的公司,看到了几千几万几十万代码的时候,那种崩溃的感觉? 代码多不可怕,怕的是代码的可读性.维护性.扩展性是如此之差,这时候该怎么办呢? 当我进入了新的公司,利用了一个星期去熟悉代码,也知道了各个开发的编程习惯,在一个大公司里,没有一个规范的编程宝典,出来的就是这种大杂烩,但作为另一个开发的我,该怎么做呢?顺着他们的开发思路继续写这种代码? No,It's Not My Style! 该如何进行慢慢重构,等到一定阶段去跟领导说呢? 1.把现在的hard code统统整

Hybrid框架UI重构之路:三、工欲善其事,必先利其器

上文回顾:Hybird框架UI重构之路:二.事出有因 工欲善其事,必先利其器,事是重构的目标,器是开发环境. 这篇文章将讲述重构时的UI框架的目录结构,且需要使用的开发工具. 目录结构 demo : 开发框架的模板(单页模式) demo-muti : 开发框架的模板(多页模式) demo-scene : 示例模板.一个完整的示例,目的是给使用者稍作修改就可以使用在项目上. demo-template : 给使用者使用的开发模板. demo-whole : 可在PC上演示的示例模板 dist :

Hybrid框架UI重构之路:四、分而治之

上文回顾:Hybird框架UI重构之路:三.工欲善其事,必先利其器 上一篇文章有说到less.grunt这两个工具,是为了css.js分模块使用的.UI框架提供给使用者的时候,是一个大的xxx.js.xxx.css,但在开发时候,必须划分模块. CSS模块划分 1.variables.less 这里面是一些样式的变量.函数 例: 字体: @baseFontSize: 20px; 圆角: .rounded-corners (@radius: 5px) { border-radius: @radiu

Hybrid框架UI重构之路:五、前端那点事儿(HTML、CSS)

上文回顾 :Hybird框架UI重构之路:四.分而治之 这里讲述在开发的过程中,一些HTML.CSS的关键点. 单页模式的页面结构 在单页模式中,弱化HTML的概念,把HTML当成一个容器,BODY中显示的主体内容才是页面,一个HTML容器中可以存放1个或者多个页面,每个页面放置于section中.而一个页面(section)中必有主体内容(content),也有可能包含头部内容.底部内容,甚至一些侧滑菜单等. 所以,以我们通常看到的一个移动应用的界面中包含了顶部Title和主体内容的页面代码如

Hybrid框架UI重构之路:二、事出有因

上文回顾:Hybird框架UI重构之路:一.师其长技以自强   一切的重构都是有原因的,或许为了更快速度.更好体验.更快捷开发等,于是就有了自己的开发目标,简单看看未重构前UI("中国移动式"风格). 上一篇文章说明调查了这么多类似框架,对比了他们的特点,而比对自身UI,也是存在可优化的地方,于是有了下面几点目标(仅仅UI框架方面,不涉及原生部分). (1)规范开发 1.SVN版本控制.之前的UI框架部分是没有进行svn版本控制的,于是会导致个问题--有些文件在多次修改后,连当初的开发

Android Studio重构之路,我们重新来了解一下Google官方的Android开发工具

Android Studio重构之路,我们重新来了解一下Google官方的Android开发工具 记得我的第一篇博客就是写Android Studio,但是现在看来还是有些粗糙了,所有重构了一下思路,覆写了一篇 Google主推-Android开发利器--Android Studio,这可能是最全的AS教程! Android Studio,自Google2013年发布以来,就倍受Android开发者的喜爱,我们本书,就是基于Android Studio来进行案例演示的,大家都知道,Android

Hi,我们的代码重构了

 作为一名程序员,我最大的愿望是自己写的代码,能够被人称赞,一直留存在项目里,直到永远.能够让自己的代码一直留存在项目里,一方面自己写的代码要健壮,没有任何逻辑错误.另一方面,还要具有很好的扩展性,能够适应需求的变化.对于前者来说,只要有个两三年的基本功,基本上就能保证代码的质量.然而,要写出具有扩展性的代码,却是一件比较困难的事情.       不是因为具有可扩展性的代码不好写,而是因为这个度不好把握.我们知道系统的可扩展性总是与系统的业务和性能成反比,因此,我们不会在追求系统的扩展性上而忽略

代码重构(二):类重构规则

在上篇博客<代码重构(一):函数重构规则(Swift版)>中,详细的介绍了函数的重构规则,其中主要包括:Extract Method, Inline Method, Inline Temp, Replace Temp with Query, Introduce Explaining Variable, Split Temporary Variable, Remove Assignments to Parameters, Replace Method with Method Object等.关于

代码重构(一):函数重构规则

重构是项目做到一定程度后必然要做的事情.代码重构,可以改善既有的代码设计,增强既有工程的可扩充.可维护性.随着项目需求的不断迭代,需求的不断更新,我们在项目中所写的代码也在时时刻刻的在变化之中.在一次新的需求中,你添加了某些功能模块,但这些功能模块有可能在下一次需求中不在适用.或者你因为需求迭代与变更,使你原有的方法或者类变得臃肿,以及各个模块或者层次之间耦合度增加.此时,你要考虑重构了.   重构,在<重构,改善既有代码的设计>这本经典的书中给出了定义,大概就是:在不改变代码对外的表现的情况