求助:如何能快速接手修改别人的系统

        本人新换工作,接手一个同事的项目,本身项目不是很大,只是业务逻辑比较复杂一点。先简单介绍一下系统,编程语言:采用ASp.net C#、数据库:Microsoft SQL Server 2000,log4net、AjaxPro、SqlHelper等。项目架构:三层架构(其实很多地方都是直接在Page页面写SQL语句)
       以下几点是我遇到的问题
       1、 没有任何文說明、就边数据库也没有文档(70多个表)
       2、 JS函数放的地方也有点乱,本来是想写个统用的JS数,这是好事啊。给你举例这样写会不会有点问题。比如一个产品、下面有很多品种,应该基本上内容都一样(他就给这个产品写了一个统用的数据验证函数,刚开始还相安无事,可是随这用户的使用,感觉有个产品的参数和其它产品不一样,这就要修改验证,可是你修改后,又影响了其它产品,不是用户想要的效果)。
      3、 有的WebForm页面会有上百个隐藏控件,可是又没有地方使用。这就后来维护人员增加了难度。他看看这么多东东,他也不敢动。
      4、 数据库相同的字段、在不同的表中长度不一样,这样会造成多表关联查询时,数据丢失。
      5、 Cs文件中参数长度是20,可是到了存储过程长度就变成了10,这样也会造成在查询时数据丢失。
      6、 Cs代码写的不太规范,理想状态应该是声明、属性、函数、事件相应的放在一起。
      7、 用Asp.net开发的,改起程序来像是asp开发的。
      8、 很多下拉列表直接在WebForm页面中赋值。
     以上几点问题是我接手項目後发现的。
     我接手别人项目的工作思路(在没有项目文文件的情况下)
     1、 把接手的系统跑一遍,对每个功能都跑一遍,熟悉业务流程。
     2、 熟悉一下数据库表结构、找出表之间的关系。
     3、 在打开项目代码,看看项目用的是什么框架?除了系统自带的控件、看看是不是用了第三方控件或组件。
     4、 在看某个功能模块—>打开相应的web页面,把web页面功能名称写出来。找到页面之间的连接关系、参数是什么方式来传递(Session、Request、Server.Transfer)等。从页面显示到数据操作相关的代码看一遍,又没有说明,真累啊,
    怎样才能避免以上问题的发生,我们应该如何做,这是我想知道的。写这篇文章并不是说我同事水平不好,可能在哪个环境、个人的开发思想有关系。问题已经发生,找出解决问题的方法是关键。欢迎大家提出自已的想法。谢谢!
    暂时发到首页,如果dudu感觉不合适,请删除。谢谢!

posted on 2008-06-27 14:18 疯狂年代 阅读(2492) 评论(44)  编辑 收藏 所属分类: 开发日志

  回复  引用  查看    
2008-06-27 14:23 | 光年      
写的乱的代码,看起来会很头疼...还是看自己写的爽啊

  回复  引用  查看    
2008-06-27 14:34 | 疯狂年代      
光年:
自已写的东西自已看这是舒服,要是让别人看这也舒服,是需要一定的水平的。希望在设计的过程中多考虑考虑用户、多考虑考虑以后系統维护。谢谢!
  回复  引用  查看    
2008-06-27 14:41 | Ants      
几年前我写的代码,我现在看也不舒服。呵呵
  回复  引用  查看    
2008-06-27 14:48 | 置身珠海,学习与奋斗      
遇到这样的系统,一般都是随着生产环境不断调整的结果。
重写一遍代码是非常不现实的。

通常做法是,根据实际需要对功能进行修改和维护,研究业务流程,推敲假设自己遇到同样的问题应该如何处理等等。

博主是否是在企业的IT部门工作?
  回复  引用  查看    
2008-06-27 14:49 | 疯狂年代      
Ants:
这很正常,刚开始写程序都是这样。我只是把问题提出来,找到一个好点的解决方法。如何很快上手修改这样的源代码,尽量避免自已也发生这样的错误。
  回复  引用  查看    
2008-06-27 14:50 | westhot      

1、 把接手的系统跑一遍,对每个功能都跑一遍,熟悉业务流程。
2、 熟悉一下数据库表结构、找出表之间的关系。
3、 在打开项目代码,看看项目用的是什么框架?除了系统自带的控件、看看是不是用了第三方控件或组件。
4、 在看某个功能模块—>打开相应的web页面,把web页面功能名称写出来。找到页面之间的连接关系、参数是什么方式来传递(Session、Request、Server.Transfer)等。从页面显示到数据操作相关的代码看一遍,又没有说明,真累啊,

---------------
我现在也是 维护的 这样的一套代码,先熟悉,一般这种情况系统 已成型了, 改动不大 。

这种代码 一般都是外行领导只求速度的产物,“不管你用什么技术,完成需求就行”什么 “一个礼拜” “一个月”完成之类 呵呵。

  回复  引用  查看    
2008-06-27 14:51 | 疯狂年代      
置身珠海,学习与奋斗 :
谢谢你的建议!:)
  回复  引用    
2008-06-27 14:51 | Origami [未注册用户]
这就看到文档和注释的重要性了
  回复  引用    
2008-06-27 14:55 | A.Z! [未注册用户]
楼主有夸大之嫌疑,项目经理是吃干饭的,居然能同时出现1-8条的问题?
  回复  引用  查看    
2008-06-27 14:57 | westhot      
--引用--------------------------------------------------
A.Z!: 楼主有夸大之嫌疑,项目经理是吃干饭的,居然能同时出现1-8条的问题?
--------------------------------------------------------

估计 是一个人作出来的 项目经理是外行,要么就是“时间紧迫 啊”
  回复  引用  查看    
2008-06-27 14:58 | 疯狂年代      
A.Z!
这个问题对事不对人!只想找到最好的解决方法.
  回复  引用  查看    
2008-06-27 14:59 | 疯狂年代      
Westhot:
Westhot说的对,一个人做出来的。

  回复  引用  查看    
2008-06-27 15:00 | 小猪凯      
--引用--------------------------------------------------
westhot: --引用--------------------------------------------------
A.Z!: 楼主有夸大之嫌疑,项目经理是吃干饭的,居然能同时出现1-8条的问题?
--------------------------------------------------------

估计 是一个人作出来的 项目经理是外行,要么就是“时间紧迫 啊”
--------------------------------------------------------
要么根本没有项目经理,企业的IT部门写程序都是很随意的,同时需求变更也很频繁.
  回复  引用    
2008-06-27 15:00 | 未注册用户 [未注册用户]
这种可能性还是有,特别是小公司,很多都这样的.
项目经理在有些公司里只是名头而以
  回复  引用  查看    
2008-06-27 15:04 | kiler      
对于很烂的代码,有时候重写一遍都快些。
  回复  引用    
2008-06-27 15:15 | securityelement [未注册用户]
如果项目比较小:
先分析有哪些改动,视变动的大小决定是修改,还是重写

如果项目比较大:
先分析项目是否有继续的必要,视重要程度决定是放弃还是重写
  回复  引用    
2008-06-27 15:26 | babybear [未注册用户]
首先是要熟悉功能,通过功能定位代码也是一个方法,其实每个人写代码基本都有自己的一套方法,你熟悉了他的风格就好找了,当然,必要的时候可以重构他的某些部分!个人见解:)
  回复  引用    
2008-06-27 15:37 | ZZZZZZZZ [未注册用户]
--引用--------------------------------------------------
kiler: 对于很烂的代码,有时候重写一遍都快些。
--------------------------------------------------------

  回复  引用    
2008-06-27 16:07 | 111xzcvsdaf3wesadv [未注册用户]
sadfsdafsadf
  回复  引用  查看    
2008-06-27 16:24 | 紫色阴影      
首先是为什么要修改这个系统,是改bug还是增加新的功能?
代码写得烂,不说明它不能工作,能够正常工作的代码为什么需要修改?用户并不在乎是不是写得好而在乎能不能完成功能。

重写太不现实了,可能很多地方你都考虑不到,而且这个成本谁来付?

建议是要修改或者增加新的功能的时候,对要影响的地方补上测试,比如为某个模块增加一项新的功能,那么就应该对这个模块写测试,来确保你的修改不会对现有功能造成影响。

很难修改的地方就重构吧,有测试保证着。
  回复  引用  查看    
2008-06-27 16:31 | 蜗牛身上的一只蚂蚁      
嗯。。我也刚刚接收了一个以前公司留下来的项目。现在在其基础上进行扩展。。我这的问题就是(如果数据库中有内容。不会报错。。如果数据库中没内容。那错误一大堆。。。晕迷迷的。。)犹其在经理要我做演示的时候。不是这里报错。就那里报错(只增加一个小功能,没跑原来的程序)。。我都不知道怎么说;难道我得说:是以前的没做的没验证。。汗。。
  回复  引用  查看    
2008-06-27 17:16 | aspnetx      
放弃
或者重写.
  回复  引用  查看    
2008-06-27 17:43 | 疯狂年代      
紫色阴影:
我比较同意你的观点,毕竟系统已经用了很久。现在就是添加点新功能,改改以前的程序错误。重写不大可能。
謝謝各位的回復!
  回复  引用  查看    
2008-06-27 17:54 | DotNet菜园      
放弃
或者重写.
  回复  引用  查看    
2008-06-27 18:03 | Klesh Wong      
4、5把数据库字段大小调整到与最长长度一致
然后就是看看代码烂到什么程度,能收拾就收拾一下算了,实在没办法就只有重写了。
  回复  引用  查看    
2008-06-27 18:42 | 红尘中迷茫      
3、 有的WebForm页面会有上百个隐藏控件,可是又没有地方使用。
--------------------------
楼主辛苦了。。。
  回复  引用  查看    
2008-06-27 19:10 | Ryan Gene      
一办不要重写,因为你重写后不能保证 bug比原来少(随然代码是比先前漂亮了)。先理解需求,然后过一遍代码,然后调试下要改动的地方,理解原来代码的执行逻辑,然后下手改。
谢谢
  回复  引用  查看    
2008-06-27 20:38 | 金色海洋(jyk)      
我的经验是:推倒重来。

当然这个不太好说服领导。

不过要是不重头来过的话,那结果就很可能是“糊弄”了事,呵呵。
  回复  引用  查看    
2008-06-27 21:16 | 一味      
@疯狂年代
曾经做过同样的事情,我的建议是,循序渐进的重构,哪些地方需要变更或者存在bug就重构哪个部分,但注意重构不要对其他部分的代码有影响,否则将会陷入无穷无尽的debug中。

个人建议,仅供参考。
  回复  引用  查看    
2008-06-27 21:42 | 无常      
先熟悉原系统的业务流程,
原有的功能只要能稳定工作就别去管它,即使写得再乱~
新功功能如果需要使用到旧系统的接口,如果你觉得原接口不规范,可以在其上再作外包装。
软件好不好不只是看代码写得是否漂亮,最重要的是满足客户的需求


  回复  引用  查看    
2008-06-27 22:19 | ocean      
实际上这种情况不要重写代码,因为你还没有理解代码,所以你可能会觉得很乱,很多地方可能不符合逻辑,当你理解了之后,你可能就觉得当时这么写代码有一定的道理了。

现在重要的是整理或者重建文档,当你理解了一个部分,一个页面,一个控件的作用,就要写成相应的文档。数据库吗,至少要补充上ER图,基本的数据说明。

你不可能维护一个系统一辈子,所以完善一份维护文档,也会为你的后来者省很多事情。

实际上这也是你现在的系统唯一没有做好的地方,没有任何文档和代码注释的系统自然是很难维护的。
  回复  引用    
2008-06-28 00:37 | hunkguo [未注册用户]
最近也在为同样的事情苦恼,天天头疼,简直像在做ASP.
简直想重写,可时间精力都不够
可以邮件交流下

  回复  引用  查看    
2008-06-28 08:09 | 生鱼片      
我都干了好多这样的事了
  回复  引用  查看    
2008-06-28 08:17 | 疯狂年代      
謝謝大家,晚上我整理一下大家解決問題的思路!
  回复  引用  查看    
2008-06-28 10:56 | 巫云      
哈哈哈。很有意思。
  回复  引用  查看    
2008-06-28 10:59 | Charming.Z      
看来你这个系统已经维护相当长一段时间了。
真是同情你,^_^
应该提纲挈领,从上到下,切勿一头扎进去,云里雾里...
我也接手过一个博客系统,系统不可谓不大(千万用户级的吧),03、05下开发的代码都有,还给另一个集团拆出来一套,拆完了我还不知道里面是什么东东,呵呵。修改某个地方再理进去慢慢“享受”吧...
呵呵,祝你好运。
  回复  引用  查看    
2008-06-28 11:21 | 老刀把子      
尽量少改。
  回复  引用  查看    
2008-06-28 12:41 | Dove.Net      
现在改别人的代码,真是吐血。。

  回复  引用  查看    
2008-06-28 13:58 | 隐姓埋名      
想练习 改人家的代码`
或者 整合`

把MYSHOP 这个商城 改下 或者 整合到你的项目中`

就有所 提高了`` 呵呵!!!


  回复  引用    
2008-06-28 17:47 | hwt [未注册用户]
有这样的鸡巴人

代码不注解

文档不清不楚


问他 本人 又是很鸡巴
  回复  引用  查看    
2008-06-28 18:40 | spgoal      
如果你要改一些BUG或者加一些小功能,可以直接熟悉BUG所产生的操作过程,然后跟踪调试程序,找到问题所在,直接改
如果是要大动,我觉得这样的状况不如重做
  回复  引用    
2008-06-28 23:12 | 剑神 [未注册用户]
这个确实不好搞,在我的项目组中那些缺乏经验的人写代码真的让人难受,给他讲他还自以为是,这样的项目虽然开发交差了,但给后来的人是一个沉重的打击,项目监管的人也脱不了干系,也有责任。。。
  回复  引用  查看    
2008-06-28 23:29 | jchdong      
有的WebForm页面会有上百个隐藏控件,可是又没有地方使用。这就后来维护人员增加了难度。他看看这么多东东,他也不敢动。
--
这个可以使用Resharper 或其他工具看看那些变量并未使用,但是已经定义的,自带的功能可以format 消除多余的变量

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2008-06-27 14:25 编辑过


相关链接: