论坛首页 Java企业应用论坛

一个2600行代码的类,干掉1100行,程序照常运行

浏览 56802 次
精华帖 (0) :: 良好帖 (3) :: 新手帖 (0) :: 隐藏帖 (14)
作者 正文
   发表时间:2011-05-30  
对于维护系统来说一半都会选择重构,而不是重写。重写风险太大了,因为旧系统可以已经修正过很多BUG,直接重写的话有可能不能继承这些修复。我碰到过一个项目(C语言开发的),里面有大量的重复代码,超过7层的if语句,超过2000行的函数等,就是看了就崩溃的那种。那时我也很想很想重写,但是考虑到现有版本经过测试人员的反复测试,客户使用情况也较好,但就是新增功能非常困难,定位和修改BUG也非常困难。最终我们对系统进行了很多轮的分析,并进行重构(功能不变 内部结构变化)。代码从38K降至18K,验收测试和后续版本基本没有BUG产生。

结论
1.重构而非重写
2.重构前作充分准备,现有系统的多轮分析,人力/时间的准备。
3.重构最好进行拆分,不要想一次搞定,迭代进行。
0 请登录后投票
   发表时间:2011-05-31  
谨慎重构。
0 请登录后投票
   发表时间:2011-05-31  
其实这个感觉挺正常的
你无法保证项目组内的人的技术水平跟你一样
也无法保证项目组内的人跟你一个思路实现功能
关于重构这一块
确实是一个很大的学问
代码是由少变多再变少的一个过程

如果有人拿到你的代码再给你的代码删去一半  功能还是会实现
能说你写的代码不好么?
0 请登录后投票
   发表时间:2011-05-31  
zuzong 写道
赶工、加班、工资低、保险差、混乱的项目管理、蛋疼的经理、你说你还想要优雅的代码。。。。

 
0 请登录后投票
   发表时间:2011-06-02  
sirxenofex 写道
wubaodong 写道
我写过的一个方法,将近1000行。功能很简单,逻辑单一,输出一个PDF文件。类似你直接写一个servlet输出一个HTML文件一样。1000行是因为PDF文件内容多,如果内容需要增加,我还会继续增加方法的行数。你们说这样的方法,有必要拆分吗?

非常有必要。就算你的1000行所有代码都不能重用,也要按步骤拆成很多个小函数。运行上没有任何区别,原因只有一个:给人看


如果只是从给人看的角度考虑,那我觉得不拆分跟拆分没有优劣之分

    System.out.println("我爱北京敏感词");
    System.out.println("敏感词上太阳升");
    System.out.println("伟大领袖敏感词");
    System.out.println("指引我们向前进");
    System.out.println("啦啦啦啦啦啦啦");


类似这样罗列的输出一篇文章,拆不拆分有什么区别,每一个自然段都拆分成一个小方法吗?
0 请登录后投票
   发表时间:2011-06-02  
supertaxi 写道
我们公司一个类文件3W多行代码, 并且规定修改代码时,不能删除旧的代码,只能注释掉. 于是,一个注释直接注释一千多行...


同感
0 请登录后投票
   发表时间:2011-06-02  
supertaxi 写道
我们公司一个类文件3W多行代码, 并且规定修改代码时,不能删除旧的代码,只能注释掉. 于是,一个注释直接注释一千多行...

我们公司也有很多人有这个习惯, 不过没还出现杯具到3w多行的情况
0 请登录后投票
   发表时间:2011-06-02  
没有svn,cvs,vss之类的版本控制么
0 请登录后投票
   发表时间:2011-06-10  
一大堆人写一个类。。。代码行数爆炸
0 请登录后投票
   发表时间:2011-06-11  
痛恨写这些"异味"代码的人.这样的人在我手下,就直接开除.没商量
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics