程序员如何做到『编程速度又快,Bug 数量又少』?

有网友在 Quora 提问:如何把自己训练得『编程速度又快,Bug 数量又少』?下面是 Glyn Williams 的回复很精彩,4.5 k 赞。

三个程序员被要求穿过一片田地,到达另一侧的房子。

菜鸟程序员目测了一下之间很短的距离,说:“不远!我只要十分钟。”

资深程序员看了一眼田地,想了一会,说:“我应该能在一天内过去。”菜鸟程序员很惊讶。

大神程序员看了一眼田地,说:“看起来要十分钟,但我觉得十五分钟应该够了。” 资深程序员冷笑了一声。

菜鸟程序员出发了,但只过了一会,地雷爆炸了,炸出了巨大的洞。这下他必须偏移预定的路线,原路返回,反复尝试穿过田地。最后他花了两天到达目的地,到的时候颤颤发抖,还受了伤。

资深程序员一出发就匍匐前进,仔细地拍打地面,寻找地雷,只有在安全的时候才前进。他在一天的时间内小心谨慎地缓慢爬过了这片地,只触发了几个地雷。

大神程序员出发之后径直穿过了田地,十分果断。他只用了十分钟就到了另一边。

“你是怎么做到的?”另外两个人问道,“那些地雷怎么没有伤到你?”

“很简单,”他回答道,“我最初就没有埋地雷。”

当我们遇到我们(或其他人)给自己埋下的逻辑炸弹,编程会变得很困难。我们天天在编写逻辑炸弹。它们就在地表下静静地待着,等着爆炸。一旦爆炸,通常就带来不可预测的严重后果。

随着新的代码模块被加入到项目中,项目的复杂度会上升。这种上升不是线性的,而是呈某种指数形式。

程序员的精力是一种有限的资源,所以这种爆炸式增长的复杂度最终会淹没程序员。你的大脑最终会不堪重负,这是一个转折点。

这就是炸弹开始爆炸的时刻。有各种各样的炸弹:在遍历时修改数组,数组下标偶尔变成负数,另一个线程在你的函数执行的起点和终点中间改变对象的状态。轰,轰,轰……

我认为最快捷可靠的程序设计需要培养一种避免这些问题的风格。

编写明确表达行为的代码。选择有意义、准确、无歧义的符号名字。严格执行命名方案,不要用不同的单词描述同一个事物。

如果有,采用最简单的解决方案。不要为速度优化,而是为可读性和透明度优化。

如果你在最初编写代码时没有注意可重用性,不要欺骗自己相信代码可以很神奇地被重用。相反,应该从一种情形着手,保持代码的具体性。如果值得修改代码让它一般化,那么应该做好彻底重写的准备。

原文:http://www.php100.com/html/it/chengxuyuan/2015/0214/8646.html

时间: 2024-10-25 20:55:29

程序员如何做到『编程速度又快,Bug 数量又少』?的相关文章

程序员如何快速提高编程能力?快来看大牛的方法(转)

如果你想提高编码的能力,最容易想到的一个方法就是多敲代码.每个人都知道这点.然而,另外一种我认为绝对也能提高的方法: 阅读别人的代码能让你的编码能力得到明显的提升! 这样说,可能很多人都抱有怀疑的态度,但是我觉得你应该相信.如果你愿意尝试,我相信你将会得到巨大的回报! 这篇文章将告诉你如何阅读代码,阅读什么样的代码最有效.如果你已经很擅长阅读别人的代码了,那读完此篇文章,你可能会发现新的方法. 应该阅读什么代码? 这是一个很重要的决定,很难给出具体的建议.我无法简单的告诉你应该阅读这个代码还是那

黑马程序员_JAVA UDP网络编程学习笔记

一.UDP网络编程概述 采用TCP协议通信时,客户端的Socket必须先与服务器建立连接,连接建立成功后,服务器端也会持有客户端连接的Socket,客户端的Socket与服务器端的Socket是对应的,它们构成了两个端点之间的虚拟通信链路.与TCP通信不同,UDP是面向无连接的.不可靠的基于数据包的传输协议.即应用进程(或程序)在使用UDP协议之前,不必先建立连接.自然,发送数据结束时也没有连接需要释放.因此,减少了开销和发送数据之前的延时.UDP也采用端口来区分进程. 在java中,java.

程序员必须知道的编程格言

程序员必须知道的编程格言 分类: 程序员/站长2012-02-29 09:52 588人阅读 评论(2) 收藏 举报 编程blog 1.保持简单直白(Keep It Simple Stupid) 2.不要自我复制(Don’t Repeat Yourself) 3.能干的人解决问题.智慧的人绕开问题(A clever person solves a problem. A wise person avoids it)– Einstein 4.沉默会被理解为赞同(Silence is construe

程序员怎样才能达到编程的最高境界

程序员怎样才能达到编程的最高境界?最高境界绝对不是你去编两行代码,或者是几分钟能写几行代码,或者是用什么所谓的可视化工具产生最少的代码这些工作,这都不是真正的高手境界.即使是这样的高手,那也都是无知者的自封. 我认为,一个程序员的成长可分为如下六个阶段.     第一阶段此阶段主要是能熟练地使用某种语言.这就相当于练武中的套路和架式这些表面的东西.   第二阶段此阶段能精通基于某种平台的接口(例如我们现在常用的Win 32的API函数)以及所对应语言的自身的库函数.到达这个阶段后,也就相当于可以

<转载>国外程序员推荐的免费编程书籍资源

一.George Stocker 提供了一大串,分类如下: How to Design Programs: An Introduction to Computing and Programming 25 Free Computer Science Ebooks Free Tech Books MindView Inc Wikibooks: Programming Cheat Sheets (Free) CodePlex List of Free E-Books Book Training – O

程序员应该遵守的编程原则

好的编程原则跟好的系统设计原则和技术实施原则有着密切的联系.下面的这些编程原则在过去的这些年里让我成为了一名优秀的程序员,我相信,这些原则对任何一个开发人员来说,都能让他的编程能力大幅度的提高,能让他开发出可维护性更强.缺陷更少的程序. 我不要自我重复--这也许是在编程开发这最最基本的一个信条,就是要告诉你不要出现重复的代码.我们很多的编程 结构之所以存在,就是为了帮助我们消除重复(例如,循环语句, 函数,类,等等).一旦程序里开始有重复现象的出现(例如很长的表达式.一大堆的语句,但 都是为了表

新手程序员必读:推进编程工作的七条箴言

如果大家属于刚刚涉足专业软件开发世界的新人,各位可能会以为自己完全能够凭借着多年来在计算机科学及编程领域获得的教育及/或培训顺利玩转一切.不过在这一行业沉浸多年的老鸟开发者则希望提醒大家,单凭科班灌输的知识还远远不够,我们还需要从实践当中了解到更多极具指导性的宝贵财富. 为了掌握这些真知灼见,我与多位经验丰富的资深开发人员进行了沟通--他们至少在软件技术领域拥有十年乃至更长的从业经历(有几位甚至已经从业数十年).提到他们希望自己在刚刚毕业并初次涉足编程行业时能够了解到哪些箴言,他们都有着自己的答

程序员父亲的遗产——编程十诫 转载

我的父亲在和我彻谈编程两个星期之后就去世了. 那个时候我22岁,一个刚刚完成美学学士毕业设计的大四学生.而我的父亲62岁,比大多数我同龄人的父亲都要老.早在60年代,他就已经在田纳西理工大学开始编程了,那个时候他在穿孔卡片上写FORTRAN语言.不得不承认,我的父亲学富五车.学识渊博. 我和编程第一次亲密接触的时候,它像烟花,瞬间绚烂了我的生命.它给我的感觉既魔幻又强大,在很多方面都比视觉设计要更富有创造性和实践性. 当我节假日回家的时候,我的父亲分享了他的<编程十诫>.他打印了一份,然后和我

程序员必须克服的编程禁忌

程序员在编程的时候难免会犯错误,但如果不从错误中吸取教训,那么习惯成自然,你会经常犯错的.从错误中不断的学习,锻炼好的行为习惯有助于事业上的稳定.这就是我们如何将小麦从糟糠中区别出来以及如何避免编程禁忌的绝佳经验.此外,最重要的就是可以为客户带来更好的用户体验. 1.不提升非技术技能 我们认为非技术技能是项目成功的主要因素.这些非技术技能也可以称之为“软技能”,总体上来说,它已经被公司证明为能够驾驭企业和客户之间的长期商业关系,因此也能决定公司的成长发展路径. 2.对编码不理智 古人云:善泅者溺