当前位置:C++技术网 > 资讯 > 不要轻易修改或删除已经存在的代码

不要轻易修改或删除已经存在的代码

更新时间:2017-09-16 10:11:50浏览次数:1+次

    最近在开发微信支付系统,然后从简单的支付开始,直到后面越来越多的支付方式,代码写起来也越来越多了。前面写好的代码都是能够支付成功了的。今天为了支持更多的支付方式,如公众号支付、APP支付、H5支付等,所以对代码进行了重构。因为之前写的只是公众号支付的,在原有基础上扩展代码就会很乱,这就需要重构了。
    重构之后,整体的流程都写好了。然后就是一顿测试。因为是python代码,而且是web程序,要跟微信服务器交互,所以参数都是动态获取的。所以本地测试不方便。然后就直接放到服务器来测试了。
    python是脚本语言,代码是边解释边执行的。然后很多地方因为自己粗心大意,变量名很多都是老的变量名,实际上是不存在的变量名。新变量名和老变量名有点相似,所以也就混为一谈了。为了调试,最后不得不一路打日志,最后一直跟到最后一个函数,才全部把低级错误测完了。换做是C/C++语言,基本的语法错误,在执行之前就检测出来了。这也是脚本语言的不好的地方。因为这些语法错误在服务器还不好直接显示出来,程序经过很多道流程,前后端交互了。所以一遇到语法错误崩溃了,就傻眼了。就只有通过打日志,一步步的确定位置。脚本语言的好处又在于,只要是对的地方都可以执行,出错就不再继续执行。所以我们可以一步步的打日志来确定出错的位置。
    而此次重构,我直到测试到最后一个函数,才把基本问题排除了。太粗心了。哎!另外,VS2017里面写python代码,还是太鸡肋了,希望VS2017以后会加强吧。智能提示不到位,语法错误提示不到位,智能凑合使用。如果你想更好的体验,还是使用VSCode吧。
    所有低级错误扫完之后,却提示“支付签名失败”,然而后台下单确实成功了。只是前端无法发起支付。蒙圈了一阵子,找不到问题。所以,就冷静下来,分析问题,而不是莽撞。像这样的,前端不成功,后台却下单成功,只有可能是前后端的签名不一致造成的,而前端的签名是后台返回给它的。这样一来,那就是在传回签名的时候出的问题。
    然后找到了那段代码。新写的代码自然看不出来什么问题。然后就去对照旧代码。幸运的是,代码有备份,有惊无险。这里就需要注意一个细节,在重构代码时,改动比较大的时候,一定先要将代码备份一个,直到新代码完全OK了才能删除。看了一下旧代码。我知道我之前这里是生成了一个签名的,然后也没有写注释。今天重构的时候,一眼没有看出来什么作用,想当然以为只是将我要返回的结果签一下名。所以就换成了自定义的签名。当时心里还嘚瑟了一下,“小样,现在一改,不是更加精简了!!”然后回头来看的时候,才意识到出了问题。不仅签名换了是错误的行为,而且对被签的内容也是不能换的。两个错误的叠加,竟然毫无意识,就直接在重构的时候,将旧代码抛弃了。
    这是出了问题找了半天后才意识到的。然后将代码改回原样的逻辑,成功了。而之前的错误是“后台成功前端失败”的既成功又失败的状态真是让人哭笑不得。而现在解决了问题,又是哭笑不得,被自己整的好惨。
    所以说,“不要轻易修改或删除已经存在的代码”这个经验教训绝对不是说着玩的,希望大家可以引以为戒。在修改别人包括自己的代码的时候,一定要明白被修改的代码的所有作用,如果不知道,不要轻易修改,否则很可能埋下巨雷。另外,关键的代码一定要做好注释。看吧,我自己前几天写的代码,现在就能够改崩溃了。更不要说别人的代码,或者自己的代码隔了很久再改了。注释多一点没有关系,只有好处没有坏处,不要推崇所谓的代码就是注释的信念,不要给你自己找麻烦!!当然,也不能因此坑害了接手你代码的程序员!!!