1. 在while, for循环里, 对于肯定不应该执行下去的代码, 要坚决continue; (今天这个bug就是因为我当初写代码时的软弱, 没有坚决把冗余的数据过滤掉, 结果冗余数据进入系统之后, 造成了莫名其妙的bug, 因此, 对于我们确定的冗余数据, 就要坚决剔除)
原始代码是for循环里
if(cy < 0) {
cy = 0;
}
结果导致cy = 0, 也就是第一行的数据始终不对, 呵呵, 被cy < 0的数据冲掉了;
改为if(cy <0) {continue;}就一切ok了
2. return使用不当; 以前习惯的写法是
if(!ok) {
return;
}
觉得这样写很酷
结果很多次, 发现都是提前return造成的麻烦...因此, 还是尽量简单吧, 不要追求怪异的编程风格了...
3. >, < 与>=, <=
死在等于号手里无数次了, 很多时候写代码的时候如果大脑稍微不清醒, 就对这种是否包含边界的情况过滤不够, 结果导致基础类库出问题, 后面出现的边界bug一个是难以碰到, 碰到了也很容易被忽视, 往往要重复很多次错误才能重现, 这种bug最要命了!!
以后遇到这种很难重现的bug时, 就要考虑特殊边界情况了
原始代码是for循环里
if(cy < 0) {
cy = 0;
}
结果导致cy = 0, 也就是第一行的数据始终不对, 呵呵, 被cy < 0的数据冲掉了;
改为if(cy <0) {continue;}就一切ok了
2. return使用不当; 以前习惯的写法是
if(!ok) {
return;
}
觉得这样写很酷
结果很多次, 发现都是提前return造成的麻烦...因此, 还是尽量简单吧, 不要追求怪异的编程风格了...
3. >, < 与>=, <=
死在等于号手里无数次了, 很多时候写代码的时候如果大脑稍微不清醒, 就对这种是否包含边界的情况过滤不够, 结果导致基础类库出问题, 后面出现的边界bug一个是难以碰到, 碰到了也很容易被忽视, 往往要重复很多次错误才能重现, 这种bug最要命了!!
以后遇到这种很难重现的bug时, 就要考虑特殊边界情况了