阅读更多

15顶
17踩

编程语言

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

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

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

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


 


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

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

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

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

  • 大小: 29.5 KB
来自: www.jobbole.com
15
17
评论 共 42 条 请登录后发表评论
42 楼 fenglin_Java 2011-08-15 13:03
VS。。。
41 楼 PetriNet 2011-08-12 20:25
莫非写出垃圾代码就能得瑟?
40 楼 october731 2011-08-12 18:17
两者都要追求的人飘过
39 楼 Durian 2011-08-12 17:04
我喜欢干净整洁的代码,无论是自己的还是维护他人的。
哪怕是代码写的不够高效,不够高深,但是意图看的明明白白,对于后期维护人员也是一个好事儿。自己后期再调试个bug也能很快上手了。
就怕乱七八糟,没有调理,乱糟糟堆在一起的那种代码,都是晚上加班,通宵加班赶进度堆起来一大坨的
38 楼 any512 2011-08-12 15:56
Hooopo 写道
make it work, make it clean, make it fast.

同意!想第一遍就把代码写的完美不太可能.需要一步步去优化
37 楼 qm4050 2011-08-12 15:25
我觉得这两个都很重要。缺一不可
36 楼 Hooopo 2011-08-12 15:12
make it work, make it clean, make it fast.
35 楼 CharlesCui 2011-08-12 14:55
  
34 楼 arne3166 2011-08-12 12:32
最后一句我赞同,这篇文章的中心在于,代码最终目的是保证功能,然后力求整洁,无视功能地追求整洁,那不是一个优秀的developer 顶多算是个programmer。
文章旨在批判盲目追求整洁而忽视性能甚至功能的代码编写者。
但文中一些措辞还是需要稍加修饰,因为很多地方让人觉得 整洁是没有必要的一样,这么多人踩了,估计是这个原因
33 楼 albertshaw 2011-08-12 11:52
Checkmate 写道
raojunscu 写道
uiiang 写道
我同事写JAVA,方法名变量名大写开头,常量也是小写。代码缩进混乱,一大堆无用的空格和换行,跟他说过无数次提交代码前格式化一下,只要一个快捷键就行了,可他就是不听。说是格式化后的代码他不习惯,不能快速找到自己写的代码。造成的后果就是好几个四五千行的代码文件,每次提交时合并代码都会发现每一行都不一样,仔细比较才发现全都是多余的空格和换行造成的。真正修改的代码只有一两行。这样的代码你再说他运行效率卓越我也很难接受


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

格式化风格应该统一,我记得eclipse有这样的插件的...

确实应该统一. 格式化风格preference-java-code style-formatter里面可以设置.
项目规定一个风格,然后导出成formatter xml文件,所有人统一用这份导出的xml,提交的代码必须是ctrl+shift+f过的, 我们就是这么干的.
还有貌似同步对比的时候有选项叫做ignore whitespace吧.
32 楼 abin1985 2011-08-12 10:59
高效率的代码,这是我们的第一目标。在追求这个目标的同时,追求代码的整洁,这个也是必须的。
31 楼 sunwei_07 2011-08-12 10:50
卓越的代码应该包含性能和代码规范性,2者又不冲突。
性能是能力问题
代码整洁规范是思想问题
30 楼 Checkmate 2011-08-12 10:38
raojunscu 写道
uiiang 写道
我同事写JAVA,方法名变量名大写开头,常量也是小写。代码缩进混乱,一大堆无用的空格和换行,跟他说过无数次提交代码前格式化一下,只要一个快捷键就行了,可他就是不听。说是格式化后的代码他不习惯,不能快速找到自己写的代码。造成的后果就是好几个四五千行的代码文件,每次提交时合并代码都会发现每一行都不一样,仔细比较才发现全都是多余的空格和换行造成的。真正修改的代码只有一两行。这样的代码你再说他运行效率卓越我也很难接受


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

格式化风格应该统一,我记得eclipse有这样的插件的...
29 楼 blueDream 2011-08-12 10:24
为什么不能两者都做到呢?
28 楼 wenxiang_tune 2011-08-12 09:27
我就是喜欢代码格式化,格式不好的代码看起来特别累,可能是因为以前看了一本好像叫
java优化编程上面写的规范,受了书的影响,还有页面上标签如果格式化不好我看了就特别烦,页面代码如果超过500行我就会考虑采用其他技术来拼装,我受不了太多的代码,喜欢一块一块的。
27 楼 fflame 2011-08-12 09:19
第一反应是,这两个有啥矛盾吗?看完了发现,其实这两个还是没矛盾,只是作者应该跟他说的“很多人”强调一下优化代码的执行效率……
26 楼 jilen 2011-08-12 08:58
统一好规范,大家用相同的formatter
25 楼 jybbh 2011-08-11 20:51
这2者有冲突吗?真搞不懂
24 楼 niva 2011-08-11 20:37
引用

对于我来说,卓越的代码能够很好的运行,有很多的性能,并且很容易阅读和很容易修改。

什么叫有很多的性能?
23 楼 xujq 2011-08-11 20:08
追求卓越是我们的目标,同时编写整洁的代码也是一种习惯,不是刻意为之。从我的角度来说,规范的代码可读性还是比较高的。

发表评论

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

相关推荐

  • 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