写在前面的话:从-3-28起,文末都会分享一个编程小干货,只要你一直来,我就一直发,从不重样,总有一样是你不知道的。=======华丽的分界线=========
在项目研发中,大家是不是经常遇到这样的情况,就是自己开发好的功能,自己已经试过没问题了,过一段时间再去看却出问题了,这时候第一反应就是谁改动我的代码了,针对这种现象,我根据多年的开发经验,列出了我自己认为可能的几种情况,朋友们看看我说的对不对,如果你还遇见过其他的情况,那么就在评论区发出来分享给大家。
关联性原因
这种情况在日常工作中发生的几率较大,比如你是做业务层代码这块的,你功能开发完之后,测试是没什么问题,一切功能都可以工作,就提交到测试环境上,并交代给测试人员,但是后来测试人员发现这块功能是不OK的,就让你看,你发现的确是不OK的,经过你对问题跟踪发现是调用的底层接口发生了变化,而你自己的代码并没有什么改动,这就是系统的关联性问题造成的。为了防止这种问题的发生,提前记好日志,建立起预警机制,一旦所调用接口发生变化能通知到人。
环境原因
还有一种情况就是,代码压根没有变动,不论是业务层的,还是底层接口都没有改动,这就可能是环境问题,比如说提供redis服务的那台机器宕机了,或者是mysql服务挂了,更或者apache或者nginx服务挂了,造成的整个服务系统都不工作了,不只是你的那一块功能不工作。
代码冲突
如果团队成员中有谁版本控制工具使用习惯不好的话,造成了提交上去的代码冲突,这样冲突的文件中必然会出现特殊字符,造成调用这个文件的所有接口都会不工作的,这点PHP工程师特别有感触,因为php是直接执行的文件,java工程师可能体会不到,因为java的文件是不能直接执行的,是需要先编译称class文件,如果代码有错的话,编译到class文件这一部就会被发现了。
代码的不确定性
最后一种情况,就是代码自身的问题了,可能是写代码时情况没有考虑全面,在有的情况下是OK的,在达到某个条件时就不工作了,是由于当时自测的不够全面,没发现这个问题。为了防止这种情况,必须要提高代码的健壮性,在写代码前,要先设计好代码,覆盖全各种场景,把大的方向性框架先明确了,然后再着手去实现具体细节,这样才不会出现这种问题。
做软件开发的就是这样,一个系统不可能在那一成不变,经常变化才是正常的,没有那个系统是不需要程序员去维护而长期运行下去的,因此程序员需要不断的拥抱变化,遇到问题时冷静思考,找到根源所在,只有慢慢的把这种程序员具备的素养培养起来,以后才能在各种复杂的情况下以不变来应万变。
大家以后再遇见已经开发好的功能出现问题时,不要着急,也不要第一反应是谁动了我的代码,可以有意的去对照一下上面几点,看看是哪种原因导致的不工作,快速定位到问题后,然后再针对性的去解决问题。=======今日干货开始=========
干货分享只做简单分享,不做具体扩展,如有更多疑问