一个上万行代码的.c文件

程序员是如何看待“祖传代码”的?

程序员眼中的“祖传代码”,就像一本古老而神秘的魔法书,藏着无穷的智慧和技巧,有些代码像家传宝贝,有些像祖传秘方。快来分享一下你遇到的“祖传代码”吧~
> 提醒:在发布作品前,请把不需要的内容删掉。
很多年前的事情了,具体有多久我也不能准确的说出来了,可能是十多年前,总是很久之前的事情了。那时候西安的打卡美食牛肉泡馍普通版还只有5元,现在门面稍好的店面是22元,有些所谓的百年老店已经25元。那年我进入到一家生产“空气净化”吸干设备控制板的公司。公司的产品主要配套给南方的几家生产“空气吸干机”的生产商。与我一起工作的是位40多岁姓杨的女同事,她负责老产品的维护,我当然是负责新产品MCU程序的编写。半年这位姓杨的女同事辞职了。于是我接手她的工作。
在一起工作的半年时间,我们的工作并没有交集,所以我从来没有了解过她负责的工作内容。这下给我添了不少麻烦,好在她的负责的产品都已经销售好些年了,基本没有太大变化。如果要进行更新,我能推掉尽量推掉。因为杨同事的代码写的实在不敢直视。当时使用C8051F583单片机已经64K flash了。能存储的代码已经是几万行了。杨同事竟然没有分文件,几万行代码写在一个.c文件中,仅仅一个流程控制函数就5千行多行。看了都头大。所以对于有关杨同事负责过的产品我是能躲就躲,能推就推。
必须面对的总是有逃不过的时候。有一款生产量不大的产品用以40多立方的产品中,客户装配测试一切OK,但是到达现场运行后所有的产品总会出问题,而且毫无规律。有时工作几分钟,有时工作几个小时,甚至几天总会出现问题。上百万的停工后,直接和间接损失有谁能承担。刚开始客户的工程师也没有怀疑一个100多人民币的控制板,毕竟现场几十台设备,情况非常复杂。发生问题的次数多了工程师发现了一个情况,就是每当出现问题只要给控制板断电重新上电就会正常工作。于是就怀疑到我们的控制板了,既然怀疑到我们的控制板,就找到老板,老板把这件事情丢给了我,一个合作了十几年客户的问题必须解决。于是我是无论如何也躲不了。
该产品的硬件已经非常成熟,我没有怀疑硬件的问题。软件是杨工在另外一款产品的基础上完成的。打开该产品的软件项目后我仿佛到了在盘丝洞的门。好在C8051F583当年不算小众产品,可以跟踪调试。好在产品功能不复杂,花了两天时间基本理出这个产品的基本脉络。令我着急的是虽然软件的编写有点问题,但是没有发现任何问题。
又花了一天测试了该产品,性能表现几乎完美。我报告了老板,老板开始教导对方转移考虑的方向,比如检查地线,排除干扰等等。对方派了资深现场工程师,经过几天的折腾出问题概率有所降低,但是总是还有问题。
控制板上有RS485通讯口,通过RS485连接到控制中心,现场的的工程师告诉我问题是有时候我们的RS485通讯端口就没有任何反应了,但是断电重启后就没有问题了。其余功能正常,看来问题只要出在通讯上。我给杨同事打了电话,她刚到新单位非常忙,告诉我这个产品关于通讯问题是一年前离职的一位同事编写的,她没有修改过,而且这个产品销量非常少,她也不了解。
杨同事提到的一年前离职同事据说是老板辞退时因为补偿问题和老板搞的不愉快,估计不会帮忙的。于是我看了一下关于通讯代码。程序还是非常简单,报文采用的固定32字节长度,当接收到32个字节就执行改该报文。我测试了一下没有什么问题。但是现场工程师的问题还是要解决。
我仔细浏览了有关通讯的代码,最后还是发现了问题。就是只判断了包头,但是当包头正确,接收的数据不够32字节时没有做任何处理。假如报文缺失若干字节,那么后来发送报文会继续接收到缓冲区。那么报文肯定不正确。而且永远不会再正确了。查找问题比较困难,修改问题倒是不难。我假如定时器,接收到包头后,如果5mS之内再没有数据到达,我就认为对方发送结束,并且执行改报文。我将新程序的控制板寄给了客户,问题很快就解决了。
我在那个企业工作了6年,产品时不时地会售出几块,但是我始终没有勇气去理会那个上万行代码.C文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值