工作中哪些代码不能写?
最近,有同学偶尔会问我一些学习过程中遇到的简单问题,比如:
为什么以下这个表达式输出结果是10?
b=1;
(++b)+(++b)+(++b) = ?
这是他用vc6的测试结果:
看到这个问题,我的第一反应是:
k!要是谁在项目代码里这么写,直接开掉!
这种代码,理论上应该是9,但是在不同的环境,不同的编译器,甚至不同的编程语言下,结果的多样性简直可怕。
比如,我用node.js随手做的测试:
这里,(++a)+(++a)+(++a) = 9,跟理论相符,然而,细心的同学可能发现了:
(a++)+(a++)+(a++) 却等于6!
为什么呢?
有兴趣的同学可以深究一下。
不过,我个人是觉得没有什么意义的。
就像这位同学说的:
类似的代码,我们在工作中还能遇到不少。
这些课本背后的习题,往往挂着“考察对语言的理解程度”的羊头卖着“太简单的代码显不出我的水平”来的狗肉,其实误人不浅。
工作中,我们往往要跟多个同学一起合作,而且写过的代码,过一段时间往往还需要回头再阅读,不管是为了查bug还是添加新功能。
一份好的代码,不仅仅要求结果正确,还要求具备较好的可读性和易维护性。
那么,你是否遇到过,或者自己也写过什么样被人或者被自己咒骂的代码呢?