小赖子的英国生活和资讯

2处代码

阅读 桌面完整版

不知道从什么时候养成的习惯,每天非得到晚上一两点才会想收拾上床.尽管有时候真的没有事情做.边听音乐边瞎看.也许这就是晚睡强迫症吧.

数组越界

不可否认, 晚上写写代码效率还是可以得到保证的, 没有干扰,写出的代码一般来说比较正确.那天看到代码库里有这样的代码:

1
2
3
if (arr.length > 5) {
  int y = arr[6];
}
if (arr.length > 5) {
  int y = arr[6];
}

如果 数组 arr 的长度大于 5, 那么就取第 7 个元素赋值给 变量 y. 如果用中文写出来, 估计程序员也能马上明白问题出在哪儿了.数组越界是最经常出现在错误.在软件公司里,需要培养能够帮助你, 能够读懂你代码的人.代码审核就特别重要.

动不动就 if . else

有些很简单的逻辑, 很直白的代码翻译并不一定是效率最高的.比如有一个输入整数 n, 想把其中几个位 bit 给清掉.可以这么写:

1
2
3
if ((n & bit) == bit) {
  n -= bit;
}
if ((n & bit) == bit) {
  n -= bit;
}

如果 bit 都是设置了,那么就清掉.但实际上可以这么做:

1
n &= (~bit);
n &= (~bit);

其实这两个是有点小区别的[见此英文贴].第二中方法不一定需要所给的 bit 都在 n 中设置了.通过 逻辑反 (bitwise not) 把 n 中 bit 位设置成 0.

一点的代码优化也可以造成很大的区别,特别是如果这样的代码需要被调用成千上万次.判断往往会破坏代码的行云流水,能避免就避免.

— xxx —

2点了, 我得去睡觉了.晚安!

强烈推荐

微信公众号: 小赖子的英国生活和资讯 JustYYUK

阅读 桌面完整版
Exit mobile version