今天发生了一起事故,追查下去,找到了一段陈年老代码。
代码逻辑很简单:
1 |
|
这个代码的作用是什么呢?判断a与b是否相等。
为什么能判断呢?或者说什么条件下这个逻辑是生效的?
聪明的你可能有了答案,当a和b都是2^n的时候。
在位与运算的时候,只有完全一样a&b才能大于零,否则,每一位必然会有一个0,最终结果为0,表示不相等。
这个算是比较巧的写法(这么写的人少),另外理论上这个操作比直接判断相等是要快一些的。
但是却隐藏了两个极大的问题
- 数值增长会很快,迅速达到越界的范围,毕竟指数增长啊
- 如果这个逻辑一直是由同一个人维护还好,知道赋值必须为2^n,如果代码交接给别的组或者换了一个新人,极有可能不知道这点,赋值的时候没有遵循指数规则,然后就悲剧了
墨菲定律说的是个概率问题,感觉世上的事情没啥能逃脱统计,然后果然就悲剧了。对于系统来说,一个&值多少钱,可能一文不值,也可能是天价。
后来我想了想,在代码层面至少有两个问题
- 如果接手别人的代码,一定要看一遍,另外对里面不符合常理的地方一定要跟进,这些地方往往是定律的藏身之所
- 写代码的时候,通俗易懂是最重要的,不要去炫技,也不要为了炫技而埋了坑。就对上面举例的代码而言,即没有充分利用每一个数字,而且很可能引发错误,另外其实也提升不了多少性能,优化优化逻辑、改改算法,性能不会比这个提升的多?
最后说一句:
1 |
|
这个写法不香吗?