/ 开发笔记

工作中哪些代码不能写?

最近,有同学偶尔会问我一些学习过程中遇到的简单问题,比如:
为什么以下这个表达式输出结果是10?

b=1;
(++b)+(++b)+(++b) = ?

这是他用vc6的测试结果:
70A8A882160CC6D17B80C01E76E261FC

看到这个问题,我的第一反应是:
k!要是谁在项目代码里这么写,直接开掉!

这种代码,理论上应该是9,但是在不同的环境,不同的编译器,甚至不同的编程语言下,结果的多样性简直可怕。

比如,我用node.js随手做的测试:
DC4DD07368A05D55619E09F715460A37

这里,(++a)+(++a)+(++a) = 9,跟理论相符,然而,细心的同学可能发现了:

(a++)+(a++)+(a++) 却等于6!

为什么呢?
有兴趣的同学可以深究一下。

不过,我个人是觉得没有什么意义的。

就像这位同学说的:
E101B4D31DCE9874619304817485D3E1

类似的代码,我们在工作中还能遇到不少。
这些课本背后的习题,往往挂着“考察对语言的理解程度”的羊头卖着“太简单的代码显不出我的水平”来的狗肉,其实误人不浅。

工作中,我们往往要跟多个同学一起合作,而且写过的代码,过一段时间往往还需要回头再阅读,不管是为了查bug还是添加新功能。

一份好的代码,不仅仅要求结果正确,还要求具备较好的可读性和易维护性。

那么,你是否遇到过,或者自己也写过什么样被人或者被自己咒骂的代码呢?