项目经验教训

我今天在HCA下调试了一下为什么加载h323ras.hca消息会crash的问题。找到了原因,发现是Joe修改后的代码逻辑上的错误造成的。去年我们安排了三个人花了几个月的时间在搞H323和III ASN.1 Tool,我们对于这个东西应该已经是比较清楚了。所以在在移植Joe的代码时,我们就应该能发现这个问题。实际上在HCA里面会产生crash的两个extract()函数体被注释掉了,当时并没有发现这个问题。应该即时发现这个问题,去解决它或者记录它,而不是隐藏它。即时发现了不自己去解决,也可以跟Joe协商去让他解决。这是一个处理问题的态度问题,我们在遇到问题或者看到代码写的不好时,往往想偷懒而不愿意去面对它。实际上这些问题积累下来以后会给将来造成更多的麻烦。

我的另外一个感觉是我们在面对困难的问题是缺乏信心和毅力,III ASN.1 Tool总共加起来都没有两万行代码,除去ASNParser当时我们不需要关心外,其它代码不到5000行,背我们也要把它背下来。黄祥华是一个身边值得学习的榜样,他在做Codec的开发时遇到的问题绝对比我们所有其它项目的困难要大,但是他通过正确的方法和坚韧的毅力最终解决了问题。他接手comscore的sniffer开发时同样有许多困难,就是他处理问题的方式使他能够成功的接手这个产品。

H323 Decoder已经是很久以前的事情了,我不是为了以前的事情来责备谁。我只是想从这个事情里面总结一些经验。

1.我们做一个功能的时候要彻底把它搞清楚,也就是前期的分析和设计。可靠的功能需要我们在编码之前把问题分析清楚并做出良好的设计,而不能完全靠QA的测试,QA只能帮我们发现问题,但是不能替我们解决问题。我们可能会做的慢一点,但是完成一个稳定可靠的功能比完成两个不太确定不易维护的功能更重要。

2.有些项目不太容易在一开始就做出设计,这对我们很常见。例如黄祥华加codec,和你们做H323 Decoder。这样的项目需要我们做预研做尝试。但是预研后一定要回顾,并基于尝试进行设计。如果仅仅是尝试之后发现功能实现了就进入测试阶段是危险的。这表示我们将依赖测试来保证质量,而不能确保自己有可靠的设计。(对于这一点我自己需要检讨,因为我当时还能体会到这一点并对我们的开发过程做出干预)。这样做的另外一个问题是增加此功能以后的不确定性和维护困难度,原因应该很容易理解。

3.我们要有信心。通过合理的分析,大部分的问题都会有合理的解决方案。我们组一路走来遇到许多问题,也会遇到新的困难,分析问题和解决问题的能力是我们重要的立足之本。即使有一天我们不做开发了,培养出来的这种素质对我们依然重要。

4.项目里面遇到问题的都要用一个清单记录下来,按照优先级来安排时间解决,而不是最后全部都忘掉。

5.追求完美,拒绝偷懒。在遇到问题或者开到代码不合理时,我们需要在解决成本和收效之间取个折衷。值得修改的就及时修改,避免将问题遗留,从而给以后带来更多的问题。偷懒有的时候会需要将来更多的时间浪费作为代价。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值