什么样的代码种会发现到美了。总结下,个人感觉有几点:
1 实现和现实之间的匹配
代码实现的功能以及所用的命名、处理和现实世界是匹配的。很多不合理的代码,对照到现实世界也是说不通的。这时如果和程序员沟通,他可能会进行一个自然表述,这种表述往往和代码诉说的不一样,如果尝试着按自然表述的实现代码又会有一番不同的摸样。所以看代码的过程也是一个比对现实的过程。参见《像说话一样写代码》
2 占空比
如果整个屏幕密密麻麻都是代码就有黑压压的感觉,有点透不过起来;如果整个屏幕几乎看不到代码,那还是代码文件吗?记得我刚进IT行业时,不是特别注意空格和空行,有一次在两个函数之间可能是写的时候边思考就边按回车了,结果就在两个函数之间留了很多个空行。Code Review的时候当时的技术主管就问我一句“这是用来开火车的吗?”,让我好是尴尬。当如果太吝惜空格和空行,那代码看起来就是一坨。
3 缩进
有分支就会有缩进。缩进的深度会影响程序意图的呈现。这好比一个人讲故事的时候经常扯东扯西,拘泥于一些细节,到最后无法呈现一个好的故事梗概。毕竟人的记忆容量是有限的,每次缩进都涉及一个保留现场和恢复现场的过程,这种过程就会照成记忆的压力。前段时间在找一个诡异的bug的时候(在旧机器上出现,在新机器上不出现),最后发现的原因就是在一个有上千个case的switch中的某些case中包含一个有上百个case的switch语句,计算机都受不了了,人何以理解。我们不能奢望写没有缩进的代码,但我们要有意识去珍惜每次缩进机会。
4 干净
不要有死代码,不要有过多的注释,不要有重复。写干净代码的诀窍和打扫房间一样,需要的是经常清扫,而且不忘死角。你可以将垃圾扫到地毯下,也可以扫到角落中,但这只是临时措施。我也这样做过,把一些混乱的代码隐藏在某些函数或者文件中以使得Code Review的时候可以顺利进行。但糗的是Code Review时眼尖的同事就会提出说感觉这个函数很重要,想看看实现。可以预见当打开的时候,大家无不倒吸一口气。所以一样不要在代码中设置一些垃圾场,因为这些迟早也需要面对。
5 亮点
如果代码仅仅做到以上几点,看起来也会略显枯燥。好的代码需要阅读的时候很平滑但又不乏亮点和新意。一个巧妙的处理都可以让人以前一亮,从而对剩下的代码有了更多的期待。工业中的代码往往强调标准、统一而摒弃个人编码风格。所以如果要让代码有个性,可以在代码中将亮点和创新作为个人的标签。这种情况下又有谁会去制止和抹杀呢?