最近我和一些程序员就编程问题进行了一次有趣的讨论。我通常会有这样的印象 感觉一些程序员过于强调代码的整洁。不要误会 我也很注重代码的整洁 在过去几年来也写过不少强调代码整洁的重要性的文章。但当我编程时 代码整洁只是我的第二重要目标 它永远不会取代我的首要目标:让软件先跑起来。让它能跑的很漂亮 这是我更大的愿望。

当谈论起代码整洁时 很多人都能饶有兴趣的说出很多。他们坚持不懈的追求这个目标 有时他们在编程时还会穿上带有Uncle Bob的绿色的宣传图标衣服 以此提醒自己什么是最重要的:写出整洁的代码。不幸的是 很多次我都发现 很多人在重视"代码的样子"的同时 却忽略了要把"代码的功能"也放在同等重要的位置。例如 很多人不愿意去学习ORM实现的背后原理 他们更愿意使用一些像Hibernate实体映射工具的东西把数据映射成实体对象 即使当这样做比起直接获取数据是效率低的让人惊讶时也是如此。他们并不考虑多次远程调用的代价或大数据量传输的成本。他们一遍一遍的就是写不出一个好的保龄球游戏 因为他们把数据库的操作放在循环里了。

代码整洁并不是构成好程序的必要条件 好程序也并不必定是代码整洁的。对我来说 好程序是运行良好的代码 容易理解 容易修改。这是它们的先后次序。我知道 大家都非常明白 代码的易于理解、易于安全的修改是非常的重要。但不管代码写的如何清晰易于阅读和修改 如果它没有做它本该做的事情(不能覆盖所有角落场景) 或花费了它本不该使用的长时间执行操作 它就不是好代码。当然 它很整洁 可却没有用处 不是吗?

我不是鼓励你过早的进行优化。除非你有《骇客帝国》里Neo一样的本领 否则你过早的优化的程序里至少有四分之一是不正确的。优化最重要的是找到瓶颈 其它的努力都是浪费。

不管怎么说 你应该写成整洁的代码。但你要三思 不要为了代码整洁 而放弃了写出好代码。

原文出处:http://www.vaikan.com/clean-code-versus-great-code/