如同人生一样,没有顶层设计的代码移植过程也是会增加许多原本没必要的挫折。
最近一周在忙一件事情:将产品A上的F功能移植到产品B上。其中一个很麻烦的问题就是代码中变量和常量单位的修改,因为由于B不支持浮点型加速运算,它当中很多原本是浮点型的数据都扩大了100倍转为整型进行运算,而A中的F功能代码还都是采用浮点型运算,因此需要将F功能的代码中变量和常量的单位根据产品B的需求进行修改,以融合到B中。
刚开始接到这个任务时,觉得这还不简单,就是把这些变量的单位修改一下嘛。于是没有太多想就开始一点点儿修改了,这真的是一场噩梦的开始。首先忘了标记在哪儿进行了修改,结果都不知道哪些已经修改过了,哪儿还没有修改。其次没有在修改之前系统地分析单位的修改所涉及的全部变量和常量,导致修改完一个再去看哪一个还需要修改,严重降低修改的效率。最后,没有系统地设计单位修改的方案和流程,为了知道自己修改到了哪种程度、哪些变量还需要修改,只能在修改完一部分之后对整个工程进行编译运行,而每次编译都需要挺长时间,自然浪费了很多时间。
更甚的是,尤其是这种缺乏顶层设计的修改,很容易导致某一个变量忘记修改,程序运行过程中自然会出现bug,而这种bug是很难定位的,因为你不确定到底是哪个部分的问题。恩,我就是在这个问题上栽了两天时间!按照自己随意的模式修改完之后,运行程序,感觉好像是运行良好,内心很激动。但是稍微改变下运行参数,里面的bug就开始逐渐冒泡了。我就开始根据bug的现象,结合程序运行的原理,逐渐猜测定位bug可能出现的位置,然后在这些位置上打上断点,逐步调试,最后终于发现了bug所在,原来是一个变量在其中一个公式中进行计算时的单位忘记了修改。解决上述