阅读更多

15顶
17踩

编程语言

原创新闻 整洁的代码 VS 卓越的代码

2011-08-10 16:34 by 见习编辑 jobbole 评论(42) 有16037人浏览

  最近,我与其他开发人员有几次关于编程的有趣讨论。我经常有这样一个感觉,一些开发人员过于注意代码的整洁性。不要误会,我也力图代码整洁,并在过去 的几年写过很多篇关于代码整洁重要性的文章。但是当我在写代码的时候,整洁的代码不是我最重要的目标,它从来不能取代我最重要的目标——使程序运行起来。 最好可以运行得很好。

  很多人喜欢谈论关于如何写整洁的代码。他们会强调自己在这方面的贡献。他们甚至带着Uncle Bob的绿色图标来写代码,这样他们就不会忽视了写整洁的代码是多么重要。不幸的是,我已经留意到很多情况下这些人并不太留意这些代码在做些什么,他们对 代码整洁的重视甚于代码的运行。有时候他们甚至懒得去了解ORM(对象关系映射)在背后是怎么运行的。或者他们会选择使用如Automapper这样的工 具,将实体映射到DTO(数据传输对象),即使Automapper与简单地搜索映射数据相比,效率低下得多。他们不在乎多个远程调用花费巨大,也不在乎 通过网络发送了太多的数据。如果他们不一遍又一遍的提高自己编写保龄球游戏代码的技巧,他们很可能会让数据库陷入死循环。


 


  代码整洁不代表代码出色,这两者也没有必然的联系。对于我来说,卓越的代码能够很好的运行,有很多的性能,并且很容易阅读和很容易修改。我很了解代码 的可读性和易维护性都是很重要的。但是无论代码多么易懂和易修改,如果它不是在做它应该要做的事情(包括覆盖所有的边缘事件(case))或者它需要更多 的时间去完成,那么它就不是一段好的代码。当然,它可能是整洁的,但它不是好的代码,不对吗?

  这并不代表你应该沉溺于过早的优化。除非你在这编程模型有和Neo一样的技能,否则你不可能成功地过早优化甚至四分之一的场景。但是还是有一些指南可 以帮助你避免最常见的执行问题。大多数的其他情况最好留到被证明是瓶颈时才处理。但是你应该至少思考一下这些代码是做什么的,整洁性带来的负面影响是否值 得。如果那些稍微比较不整洁的代码从正确性和执行来讲更有意义,我们也要毫不犹豫的去选择它们。

  无论如何,力图保证代码的整洁性。但在牺牲更好的性能之前,要慎重考虑。

 
  原文:Davy Brion  译文:伯乐在线 敏捷翻译 - 张颢铧

  • 大小: 29.5 KB
来自: www.jobbole.com
15
17
评论 共 42 条 请登录后发表评论
22 楼 云和山的彼端 2011-08-11 19:24
raojunscu 写道
uiiang 写道
我同事写JAVA,方法名变量名大写开头,常量也是小写。代码缩进混乱,一大堆无用的空格和换行,跟他说过无数次提交代码前格式化一下,只要一个快捷键就行了,可他就是不听。说是格式化后的代码他不习惯,不能快速找到自己写的代码。造成的后果就是好几个四五千行的代码文件,每次提交时合并代码都会发现每一行都不一样,仔细比较才发现全都是多余的空格和换行造成的。真正修改的代码只有一两行。这样的代码你再说他运行效率卓越我也很难接受


我同事没事就crtl+shift+f,被自动格式化的代码非常难读,cvs一同步,大把的冲突,其实他基本上没有改什么代码,就是随手crtl+shift+f

很好解决啊,格式化的代码单独作为版本提交。并且注释:格式化,无改动。
21 楼 taonlyt 2011-08-11 18:05
这个格式化的问题让人很烦恼,建议一个团队代码都按照一个模板格式化,否则各人机器上的代码模板不相同,格式化之后很难看。如果没有统一的模板还不如不格式化。还存在一个各人用的IDE不一样的问题,如果统一用一种IDE,有些人也不习惯。习惯是很难改的。呵呵。
20 楼 raojunscu 2011-08-11 17:22
uiiang 写道
我同事写JAVA,方法名变量名大写开头,常量也是小写。代码缩进混乱,一大堆无用的空格和换行,跟他说过无数次提交代码前格式化一下,只要一个快捷键就行了,可他就是不听。说是格式化后的代码他不习惯,不能快速找到自己写的代码。造成的后果就是好几个四五千行的代码文件,每次提交时合并代码都会发现每一行都不一样,仔细比较才发现全都是多余的空格和换行造成的。真正修改的代码只有一两行。这样的代码你再说他运行效率卓越我也很难接受


我同事没事就crtl+shift+f,被自动格式化的代码非常难读,cvs一同步,大把的冲突,其实他基本上没有改什么代码,就是随手crtl+shift+f
19 楼 imacback 2011-08-11 16:01
标题党,靠。
18 楼 gundumw100 2011-08-11 15:46
同意,视情况而变。
17 楼 pktangshao 2011-08-11 15:39
整洁与卓越相互矛盾吗?
16 楼 simlee 2011-08-11 14:24
uiiang 写道
我同事写JAVA,方法名变量名大写开头,常量也是小写。代码缩进混乱,一大堆无用的空格和换行,跟他说过无数次提交代码前格式化一下,只要一个快捷键就行了,可他就是不听。说是格式化后的代码他不习惯,不能快速找到自己写的代码。造成的后果就是好几个四五千行的代码文件,每次提交时合并代码都会发现每一行都不一样,仔细比较才发现全都是多余的空格和换行造成的。真正修改的代码只有一两行。这样的代码你再说他运行效率卓越我也很难接受

这样的问题太普遍了,很少人注意这样的问题。记得当时在跟日本人做软件的时候,就因为多了一个空格,让我写检讨。TMD
15 楼 uiiang 2011-08-11 11:34
我同事写JAVA,方法名变量名大写开头,常量也是小写。代码缩进混乱,一大堆无用的空格和换行,跟他说过无数次提交代码前格式化一下,只要一个快捷键就行了,可他就是不听。说是格式化后的代码他不习惯,不能快速找到自己写的代码。造成的后果就是好几个四五千行的代码文件,每次提交时合并代码都会发现每一行都不一样,仔细比较才发现全都是多余的空格和换行造成的。真正修改的代码只有一两行。这样的代码你再说他运行效率卓越我也很难接受
14 楼 peak 2011-08-11 10:16
微雨心晴 写道
看到Davy Brion《整洁的代码VS卓越的代码》的论述,我不禁轻蔑一笑!整洁的代码和作者所谓卓越的代码(即高效运行的代码)并不矛盾,恰恰相反,高效运行的代码几乎总是整洁的:整洁会减少不必要的复杂运算路径、为团队维护和性能优化提供可能。

http://weibo.com/sharedata



对头
13 楼 云中苍月 2011-08-11 10:05
这个有标题党嫌疑
12 楼 fu80008 2011-08-11 09:58
实际上大家都在穿着皇帝的新装。明明露着,还说好看。世界上没有完美的东西,凡是够用就好。整洁到大家能看懂就可以,代码的目的还是要健壮的运行,有良好的扩展性。完美的代码会让自己死得很惨,这样的例子太多了。
11 楼 iOracleSun 2011-08-11 09:37
如果代码连应该做的工作都没满足,这种代码不叫整洁代码,只叫无用代码.
10 楼 mvpzhoulong 2011-08-11 09:32
我也觉得两者都重要
9 楼 b_l_east 2011-08-11 09:28
Moore 写道
zhmocean 写道
任何东西都有存在的,而滥用则会让其存在的意义消失殆尽。

整洁代码和卓越代码的定义是否完整?是否是开发中唯一的因素?代码的质量又是如何、由谁来度量?或许这些才是我们真正需要思考的问题。

个人认为,那个VS标志纯属哗众取宠,如果如此的标题党,怕是要让一些习惯了非黒即白的同行一头雾水了

同意、VS纯属蛋疼之作。
如果代码都没办法做到整洁,又如何力求正确与高性能甚至卓越呢?
如果题目改成《代码从整洁到卓越》的话,大家应该有好多话要说,呵呵。


同意,通过!
8 楼 微雨心晴 2011-08-11 09:27
看到Davy Brion《整洁的代码VS卓越的代码》的论述,我不禁轻蔑一笑!整洁的代码和作者所谓卓越的代码(即高效运行的代码)并不矛盾,恰恰相反,高效运行的代码几乎总是整洁的:整洁会减少不必要的复杂运算路径、为团队维护和性能优化提供可能。

http://weibo.com/sharedata
7 楼 nvry 2011-08-11 09:27
两都之间怎么能VS,楼主思维有点混乱。
6 楼 yizhilong28 2011-08-11 09:05
整洁的代码 VS 卓越的代码 
感觉不是一个层次的,怎么比
5 楼 Allen 2011-08-11 08:49
作者意图将“高效”和“整洁”从一开始就放在对立面来讨论,仿佛他们是不能兼容的两方……
4 楼 taonlyt 2011-08-10 22:33
两者都重要,力求做到简洁又高效。如果只管性能忽略简洁,后期必然会为其付出代价。
3 楼 Moore 2011-08-10 20:39
zhmocean 写道
任何东西都有存在的,而滥用则会让其存在的意义消失殆尽。

整洁代码和卓越代码的定义是否完整?是否是开发中唯一的因素?代码的质量又是如何、由谁来度量?或许这些才是我们真正需要思考的问题。

个人认为,那个VS标志纯属哗众取宠,如果如此的标题党,怕是要让一些习惯了非黒即白的同行一头雾水了

同意、VS纯属蛋疼之作。
如果代码都没办法做到整洁,又如何力求正确与高性能甚至卓越呢?
如果题目改成《代码从整洁到卓越》的话,大家应该有好多话要说,呵呵。

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • VC++ 6.0下编写COM客户程序的三种方法(转载)

    介绍在VC++ 6.0下编写COM客户程序的三种方法,虽然每一种方法都可以达到使用代码组件的目的,但详细了解并掌握所有方法会为根据具体情况选择适当方法提供更大的余地。 COM库函数 ---------------------------------------------------利用COM库函数使用代码组件的方法是介绍的三种方法中实现起来最麻烦和困难的方法。它要求开发人员必须具有对COM原理的

  • 用VC进行COM编程所必须掌握的理论知识[ZZ]

    这篇文章是给初学者看的,尽量写得比较通俗易懂,并且尽量避免编程细节。完全是根据我自己的学习体会写的,其中若有技术上的错误之处,请大家多多指正。   一、为什么要用COM   软件工程发展到今天,从一开始的结构化编程,到面向对象编程,再到现在的COM编程,目标只有一个,就是希望软件能象积方块一样是累起来的,是组装起来的,而不是一点点编出来的。结构化编程是函数块的形式,通过把一个软件划分成许多模块,每

  • 关于COM的基础知识总结

    文章一:【转自】http://www.mianwww.com/html/2012/04/15739.html COM为组件和应用程序之间提供了进行通信的统一标准,为组件程序提供了一个面向对象的活动环境。COM标准包括规范和实现两大部分,规范部分定义了组件和组件之间通信的机制,这些规范不依赖于任何特定的语言和操作系统,只要遵循该规范,任何语言都可以作为组件开发的原始语言;COM标准的实现部分是

  • 用VC进行COM编程所必须掌握的理论知识

    用VC进行COM编程所必须掌握的理论知识-- lostall   这篇文章是给初学者看的,尽量写得比较通俗易懂,并且尽量避免编程细节。完全是根据我自己的学习体会写的,其中若有技术上的错误之处,请大家多多指正。1。为什么用COM2。用VC进行COM编程,必需要掌握哪些COM理论知识一、为什么要用COM   软件工程发展到今天,从一开始的结构化编程,到面向对象编程,再到现在的COM,编程,目标只有一个

  • COM程序编写入门(全文-3)

    COM对象的生存周期与IUnknown接口COM对象的生存周期分为两部分来讲:客户端与COM本身:在客户端,视定义的COM对象接口而定,像我们例子中的v_Obj,定义成全局变量,那么COM对象在创建时产生,只有在程序退出时才被释放。我们也可以在形式上将其释放,如:v_Obj:=nil,这样这个COM接口就无效了。在COM本身,COM接口的通过记数的方式来完成COM的生存周期,为什么采用

  • 整洁的代码

    clean code,顾名思义就是整洁的代码,或者说清晰、漂亮的代码,相信大多数工程师都希望自己能写出这样的代码。 也许这是个千人千面的话题,每个工程师都有自己的理解。比如我,从一个天天被骂代码写得烂的人,逐渐...

  • java 代码整洁快捷方式_代码整洁之道:你的代码是否足够优雅、整洁、易懂?...

    相信每一个优秀的工程师都有一颗追求卓越代码的心。注释不要给不好的名字加注释,一个好的名字比好的注释更重要不要“拐杖注释”,好代码 > 坏代码 + 好注释在文件/类级别使用全局注释来解释所有部分如何工作一.....

  • 细节之中自有天地,整洁成就卓越代码

    题图来源 unsplash前言踩着三月的尾巴,拜读完了Bob大叔的《代码整洁之道》一书,来分享一下阅读心得。(其实我也不知道看了几遍了)《代码整洁之道》的原名是 Cl...

  • 聊聊代码整洁之道

    摘要:Any fool can write code that a computer can understand.... 普通的工程师堆砌代码,优秀的工程师优雅代码,卓越的工程师简化代码。Any fool can write code that a computer can underst...

  • 代码整洁之道的一些总结(一)

    细节之中自有天地,整洁成就卓越代码。 只要我们写的代码有人读,那么我们就有必要将代码整理干净,看起来清清爽爽。也 许你是一个初学者,像鲍勃大叔说的低水平编码者为代码猴子,上蹿下跳,自以为领 略了...

  • Delphi COM编程技术一(COM编程基础知识)

    在当今Windows世界中随处可见。随时涌现出来的大把大把的新技术都以COM为基础。各种文档中也充斥着诸如COM对象、接口、服务器之类的术语。 一、COM编程基础知识介绍: 1、COM的定义         所谓COM(Componet Object Model)即组件对象

  • clean code整洁代码如何写?

    clean code,顾名思义就是整洁的代码,或者说清晰、漂亮的代码,相信大多数工程师都希望自己能写出这样的代码。 也许这是个千人千面的话题,每个工程师都有自己的理解。比如我,从一个天天被骂代码写得烂的人,...

  • 谷歌的代码覆盖率最佳实践

    我们一直倡导大家需要使用代码覆盖率数据来评估质量风险并识别测试是否充分,但是,代码覆盖率的价值是一个备受争议的话题,各方观点鲜明并且两极分化。每次在大的公开场合中提到代码覆盖率,似乎都会引发无休止的...

  • 优雅的代码

    写代码非常简单,可是优雅的代码,却不是每个人都可以写出来的,不在于难度,而在于,很多人写代码完全不为他人和团队多想一点,只顾眼下自己一亩三分地的功能实现;写优雅的代码,难度不在技术,在于为人处世的方式...

  • 代码整洁之道

    最近阅读了《代码整洁之道》这本书,感觉副标题说的不错,细节之中自有天地,整洁成就卓越代码。 概要 文不如表,表不如图,奉上一张思维导图: 下面是我看书的过程中记录的感觉我自己掌握度不够的知识点:(也就...

  • 代码整洁之道(一)最佳实践小结

    摘要: Any fool can write code that a computer can understand. Good programmers write code ... 普通的工程师堆砌代码,优秀的工程师优雅代码,卓越的工程师简化代码。 普通的工程师堆砌代码,优秀的工程师优雅...

  • 《代码整洁之道》细节之中自有天地,整洁成就卓越代码 读书笔记

    《代码整洁之道》细节之中自有天地,整洁成就卓越代码 读书笔记 There are only two hard things in Computer Science: cache invalidation and naming things. -- Phil Karlton 《代码整洁之道》主要...

  • 代码整洁之所以重要的七个理由

    本文转载自 伯乐在线,由 伯乐在线 - Victoria 翻译自 Cory House。原文链接: Cory ...首先要承认,大学毕业的时候我是个糟糕的程序员。我拿到了学位,学到了一大堆书本知识... 起初,一切正常,但是我的代码

  • 代码整洁之道|最佳实践小结

    相信每一个优秀的工程师都有一颗追求卓越代码的心,在代码整洁工程实践上你有哪些好的建议?数百人协作开发的代码如何保证代码整洁一致性?欢迎大家来讨论。 扩展阅读 怎样编写高质量的 Java 代码 如何处理前任...

  • 如何让你的代码整洁漂亮?

    “唯一能有效测量代码质量的方式是每分钟说多少个What-the-Fk ”** 让我深入解释一下: 做代码回顾的时候,我的脑海会涌现出三种不同的情绪: · What-the-Fk (厌恶)— 这代码并不需要.** · What-the-Fk...

Global site tag (gtag.js) - Google Analytics