优秀的程序员,应选择明智但并不聪明的代码方式
作为一名拥有15年开发经验的工程师,最早让我开始“懂事儿”的,是简洁明了的一句话: 出色的代码,是表达能力更强的(expressive),而不是令人印象深刻的(impressive)。 我记得当时自己对此感到很疑惑,表达能力更强的和令人印象深刻的,他们在本质上有什么区别呢? 实际上,表达能力更强意味着清晰、明确、具体。因此,一段表达能力较好的代码需要能解决一个特定的问题。在为了写这样一段代码所付出的时间与努力的背后,是非常清晰、明确、具体的目标,而这段代码也必须能够真正地实现这个目标。 而令人印象深刻的,则表示要在写代码的过程中留下明显的个人标志或印记。一段自身结构复杂,夹杂着多种深奥算法的代码,也许可以为你吸引来他人的关注、赞叹与掌声,在充分满足你的虚荣心的同时,也有可能转化为那个在未来接替你继续维护代码的工程师的满腔怒火。如果他正好是一个脾气暴躁且知道你住在什么地方的人,那么接下来会发生的事情恐怕就不会那么让你感到高兴了。 这就是程序员应该选择明智而不是聪明的原因。一个精明的开发工程师需要具备那种能够预见自己的哪些行为在什么情况下会带来什么后果的能力,并能对「自己写的是什么样的代码」、「自己为什么要这么写」,以及「这些代码在未来可能会有怎样的演变」这三个问题有着清楚的认知。简单来说,精明的工程师不会去做“亡羊补牢”式地救火开发工作,他们在写代码时坚信应当一劳永逸地解决问题。 而