W3CHINA Blog首页    管理页面    写新日志    退出

Blue blue sky

[工作八卦]俺的重构总结
小工头 发表于 2011-3-20 23:14:41

 正文之前先来个小段子:  前几天听收音机,女主持人念读者来信:“主持人阿姨你好!我是一名中学生。每当放学时,我看到满街的车流就忍不住想,要是有飞机坐就好了!主持人阿姨,到底我们什么时候才可以在北京街头……打飞机……呢?”三个月过去了,俺大胆而疯狂的重构计划终于接近完成。回头看看,感慨良多。重构开始没多久,俺就入迷了,真的好爽啊!刚开始只是去掉几个中间变量而已,紧接着就发现两段代码可以提炼公共函数,然后发现公共函数之间存在依赖关系可以封装成新类,接下来新类可以通过继承使用在别的代码中……俺不停地被新发现所鼓舞,在重构的道路上高歌猛进,却忘了书里强调的原则:重构要循序渐进,每次重构后都要做测试。当俺意识到形势不妙停住脚步时,俺已经在重构的路上走得太远,不要说测试,连编译都通不过了。俺花了差不多整整三周的时间,才从这种尴尬的局面中挣脱。这是俺在重构时得到的第一个教训:重构很爽,但不可贪多。在重构的过程中,还有一个令俺羞愧不已的发现。参考书的作者是JAVA程序员,提供的技巧都是从OOP的角度出发的。这些技巧俺在重构时用得很爽,有种天地为之一宽的感觉。过了一段时间,俺突然意识到,这么多技巧都可以用到俺原先的代码中,只能说明一件事,俺的代码不是OOP的……有了这个想法,随着重构越来越深入,俺也越来越惭愧:多年来俺一直自称C/C++程序员,原来俺只不过是个使用C++语法的C程序员而已。后来发生了一件事,让俺更加惭愧:俺曾经为一个类的封装困扰不已,具体说就是俺想在基类中声明一个方法,但想在调用时使用子类的实现。想来想去没有办法,最后是旁观者清的同事点醒了俺,这就是典型的virtual method啊!闹了半天,俺连C++语法都不熟。就这样还好意思自称IT青年,打着C/C++的旗子招摇撞骗这许多年?!实在是太惭愧啦!撞墙去~~~~撞完墙爬回来说,难怪俺以前画类图死活画不出来……说正经的,OOP真不是拍拍脑袋就能写出来的。俺和周围的许多同事一样,接受的是结构化编程的训练。按照教材的说法,编程前要画流程图。但俺觉得画流程图是一件很多余的事,从来都是裸写代码,撑死了边想边写。但OOP不同,如果不经过精心的设计,是很难一次就写出合用的代码的。在重构的过程中,俺有过多次来回修改类定义的痛苦经理。因此,设计文档对OOP来说非常重要,最简单最直观的就是类图。俺已经打算学习UML了。在重构的过程中,俺还接触到了其他的新思想。不怕各位IT青年笑话,俺是第一次实战应用工厂模式。工厂模式的确很爽,尤其是配上多个子类,完美地对应了类图。不过,由于C++需要显式的delete,工厂模式用在JAVA里明显更爽。另外,经过重构之后的代码很适合俺从另外一本书里看来的“线程化”方法。总的来说,经过这次重构,俺体验了各种新的编程理念(好吧,OOP不是新的编程理念……)对编程这件事有了全新的理解,有种“原来编程还可以这样”的惊喜感觉。而各种时尚的编程技巧和编程工具(好吧,UML也不算太时尚……)的接触和应用,使得IT青年常有的“吃老本”的恐慌感离俺远去,俺已知道有很多东西值得学习。重构是IT青年提高自身的好方法,老外诚不我欺。最后还要说一点,尽管俺的首次重构进行得不算顺利,前后花了三个月,有很多地方做得不够,也有很多地方做得过火,这些都遗留在了重构后的代码中。但是不管怎样,俺的重构平稳地结束了,即将发布。与此同时,由俺们领导亲自挂帅,集合了部门半数人手进行的一个名为“重构”实为重写的项目,比俺早启动两个月,但现在还在泥潭中挣扎:每天都在拼命地解决bug,可是每一天都有新的bug。两相对比,重构的效率是显而易见的。

阅读全文(5396) | 回复(2) | 编辑 | 精华

 


回复:俺的重构总结
跳芭蕾舞的猪(游客)发表评论于2011-3-23 17:46:28

才开始学UML啊,我一个文科生在5年前就开始学了,推荐一本书《大象》,所有UML中写地最好的一本。

个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除

 


回复:俺的重构总结
真不准发表评论于2011-3-21 20:59:46

还好还好,我主要项目是C/S的C#项目,一般OOAD相对做得比较好,主要是我们几个开发的懒,能复用尽量复用,这样一些公用的,基础的设计就很灵活。我是从JAVA转向C#的。

 


» 1 »

发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)

 
 



This is home

.: 公告

有人的地方就有恩怨

有恩怨的地方就是江湖

人在江湖漂,谁能不挨刀


Bloginess

«January 2019»
12345
6789101112
13141516171819
20212223242526
2728293031

.: 我的分类(专题)

首页(629)
杂项(69)
我喜欢过的声音(35)
耳机评测(18)
七天乐(127)
工作八卦(174)


In the Bowl

.: 最新日志

变化:俺的2012
迟来的总结,俺的2011
暂停更新:娶了媳妇不上网
一次坦诚的大会
妹子,妹子!
领导满月
当了领导能怎样
俺的播放列表
俺的重构总结
开会的故事

.: 最新回复

回复:迟来的总结,俺的2011
回复:暂停更新:娶了媳妇不上网
回复:暂停更新:娶了媳妇不上网
回复:小学生作文之记一次拔河比赛
回复:暂停更新:娶了媳妇不上网
回复:暂停更新:娶了媳妇不上网
回复:暂停更新:娶了媳妇不上网
回复:一次坦诚的大会
回复:一次坦诚的大会
回复:一次坦诚的大会


The Fishkeeper
blog名称:少年包工头的工作日记
日志总数:629
评论数量:1458
留言数量:56
访问次数:8671833
建立时间:2004年12月8日



Text Me

.: 留言板

签写新留言

你太客气了
工作是为了更好的生活。。。
飘过!
初烧耳机
路过留声
自动浇花
节日快乐
向您请教
HAHA
咨询下呵呵


Other Fish in the Sea

.: 链接



Lake JJ

真!鱼家MM

传说中的99

王小四的自留地

挣扎中的职场新人tintin同学




站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.049 second(s), page refreshed 144218267 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号