文档章节

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

紫电清霜
 紫电清霜
发布于 2015/02/28 12:28
字数 800
阅读 453
收藏 12

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


本文转载自:http://www.techug.com/programming-fast-and-bug-less

共有 人打赏支持
紫电清霜

紫电清霜

粉丝 148
博文 4
码字总数 325
作品 0
珠海
程序员
私信 提问
程序员如何做到『编程速度又快,Bug 数量又少』?

有网友在 Quora 提问:如何把自己训练得『编程速度又快,Bug 数量又少』?下面是 Glyn Williams 的回复很精彩,4.5 k 赞。 三个程序员被要求穿过一片田地,到达另一侧的房子。 菜鸟程序员目测...

zuiw
2015/02/18
0
4
程序员如何成为编程高手并以此创业

版权声明:本文为北京尚学堂原创文章,未经允许不得转载。 每个IT企业,尤其是初创企业,非常苦恼:找不到好的程序员。现在大学、软件学院及各种培训机构,每年培养几十万的程序员,毕业的每...

SXTkaifa
2016/11/09
5
0
2018开发者技能调查报告之Java程序员求职必备技能分析

根据国外开发者平台 HankerRank 发布的2018 年开发者技能调查报告的统计数据,本文摘录程序员求职时必备技能相关的调查结果。 雇主招人时,看中哪些核心竞争力? 问题解决能力(不管企业大小...

老道士
2018/06/27
0
0
苹果全新 Swift 编程语言发展势头良好,即将腾飞

苹果全新 Swfit 编程语言虽然发布仅仅几个月,但很多 iOS 和 OS X 开发者都表示对 Swift 的印象不错,这些开发者包括美国航空、Getty Images、LinkedIn(领英) 和多邻国(Duolingo)。Swift...

oschina
2015/02/08
5.5K
28
人都说程序员人傻钱多死得快,事实真是这样的吗?

人人都说程序员人傻钱多死得快,事实真是这样的吗? 人傻 这个“傻”指的是,有些程序猿们,情商比较低,又或者为人比较老实憨厚,想想每天8-12小时都坐在电脑前,看着一堆堆的字母敲代码,解...

达尔文
2017/05/07
10.8K
23

没有更多内容

加载失败,请刷新页面

加载更多

python中类方法和静态方法区别

面相对象程序设计中,类方法和静态方法是经常用到的两个术语。 逻辑上讲:类方法是只能由类名调用;静态方法可以由类名或对象名进行调用。 在C++中,静态方法与类方法逻辑上是等价的,只有一...

xiangyunyan
今天
9
0
Hibernate SQLite方言

以下代码有参考过github上国外某位大佬的,在发文的最新稳定版Hibernate上是可用的,有时间再仔细分析一下 import org.hibernate.dialect.Dialect;import org.hibernate.dialect.function.S...

CHONGCHEN
今天
4
0
CentOS 7 MariaDB搭建主从服务器

本文编写环境为CentOS7。确保关闭SELinux,关闭防火墙或者防打开指定端口。具体信息如下 #master[root@promote ~]# cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core) [r...

白豆腐徐长卿
今天
11
0
介绍python中运算符优先级

下面这个表给出Python的运算符优先级,从最低的优先级(最松散地结合)到最高的优先级(最紧密地结合)。这意味着在一个表达式中,Python会首先计算表中较下面的运算符,然后在计算列在表上部...

问题终结者
今天
4
0
Spring Boot 2.x基础教程:快速入门

简介 在您第1次接触和学习Spring框架的时候,是否因为其繁杂的配置而退却了?在你第n次使用Spring框架的时候,是否觉得一堆反复黏贴的配置有一些厌烦?那么您就不妨来试试使用Spring Boot来让...

程序猿DD
昨天
15
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部