英文原文:Clean Code Versus Great Code
我最近常常和其他开发人员关于如何写代码展开一些有趣的讨论。不可否认,现在有很多程序员过于注重代码的整齐干净,先别曲解我的意思,我也是注重代码整洁的,并且关于强调这方面的重要性已经写过一箩筐帖子了。但是,我写代码的时候,整洁的代码只是我的第二目标,而且它从来没有取代过第一目标的地位:使程序正常运作。或者可以这么说,第一永远是强悍的代码。
一旦涉及如何写整洁的代码,很多程序员就口若悬河、滔滔不绝。他们不断强调他们对于这方面的努力有多么多么尽心竭力,精益求精。甚至在某些特殊情况下,还会在编程时穿上 Uncle Bob 的绿色标志T恤,以提醒自己不要忘记他们心中最最要紧的一件事:代码一定要写得干净整洁。但是也因此,很多程序员竟然把代码的功用给抛之脑后,这真是拣了芝麻丢了西瓜。比如,他们更喜欢使用如 Automapper 这样的工具,可以将实体映射到 DTO(数据传输对象),即使 Automapper 与简单的搜索映射数据相比,效率低下得多。他们并不在乎调用多个远程需要多大的花费,也不在乎通过网络需要发送多么庞大的数据。就因为如此,使得这些可怜的逗比不得不一遍又一遍的完善代码,否则数据库就会陷入死循环。
整洁的代码不一定是强悍的代码,而强悍的代码也并非一定就是整洁的代码。强悍的代码意味着它能快速工作、有效运行、易于理解、便于修改。而在这四个功能中,易于理解的重要性不言而喻,特别是对于那些首次研读代码的,理解代码之后才能轻松安全地做出相应的改动。但是不管这些代码有多么地“一见就懂”,如果不能正常运行(包括不能覆盖所有条件),或者写这些代码的时间远远超过正常值,那么这就算不上好的代码了。或许这样的代码看上去整洁干净,但是没用,不是吗?
我也不建议过早的优化。除非你有和《骇客帝国》中的 Neo 一样的本领,否则你那些被过早优化的程序里至少肯定有四分之一是不正确的。这里有一些指导原则,有助于我们避免一些最常见的性能问题。大多数情况下不影响理解的代码可以选择忽略,除非这对于解决瓶颈问题大有裨益。对于要“打扫”的代码,首先得弄清楚这些代码是否真的对运作程序有用,或者值不值得我们去一行行“摆放”整洁。如果整洁的代码从正确性和性能角度出发更有意义,那么不用犹豫,立马开工吧。
写出整洁的代码固然好,但是如果需要牺牲性能作用,那么请三思而后行。各位,你的选择呢?
译文链接:http://news.html5tricks.com/clean-code-vs-great-code.html
翻译作者:IT 新闻 – 蒋丽丽