1 写在开始
个人觉得自己的编程能力还是可以的,至少大多数时候都有比较清晰的思路,可是编程改BUG却耗费了我大量的精力。主要我本身比较粗心,加上总是犯眯会,导致编程效率很低。现在将自己平时常见的编程错误做总结,不断回顾,希望能够培养代码洁癖。
2 今日总结
- 注意变量相减的顺序,不要写反了
- 当程序中出现多个用于计数的变量时,记得不要弄混淆,特别是i,j,k,t这四个变量命名,尤其是函数中的输入参数是整数k
- 特别注意变量初始化与后面取值的关系,比如前面取值0 或者 1, 后面的处理方法也需要做出相应改变
- 注意2维数据的遍历次序,即先遍历行还是先遍历列,遍历行列的时候是倒序还是顺序。当用一维索引来给2维数组赋值的时候,当矩阵的宽度小于高度的时候,并不会出现数组下标越界的错误,在定位bug的时候这一点极其容易被人忽略。
- 动态规划中是当前问题依赖于子问题的解,但是实际实现的时候并不一定表现为是数组下标大的值依赖于前面数组下标小的值,这完全取决于数组在某一位置的值所表达的具体含义。
- 在for循环里面一定要注意是在for的方法块里面来写进一步的判断条件还是说在for的第2个部分来写,比如 i < 5 && 新条件, 这样写的坏处是明明只想对所有变量取值做这样一个新条件的判断,不满足跳过当前取值就行,却表达成了只要当前变量取值不满足就停止循环的代码逻辑。
- 在修改函数签名的时候,一定要记得同步修改对应的函数调用处。很容易忘记
- 在很多时候会有很多命名相近具有相似用途的变量名称或者文件名称,这时候千万不要写错了!
- 在变量循环的时候一定要记得是对数组的值进行判断,而不是对数组的索引,很可能写着写着就写错了!
- 一定要注意整数和字符串的之间的转化,如果是浮点数可能不容易忘记,但是整数却非常容易被忽略,具体的场景包括输出的时候需要把整数转化成字符串,从文本当中获取数字时通常都需要把字符串转化成整数!
- 在编写工程文件时,一定要尽量使用相对目录,特别是python里面会有转门的包来解决包之间调用可能会出现的各种bug。
- 在编写多个很相似,可能只是改了模型、或者几个参数质量的代码,应该在每个文件开头标准出这些重要的区别,否则后面非常容易遗忘。