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

2015-03-12 09:19:54 +08:00
 liuhanyang0

http://jjyy.guru/how-fewer-bugs/

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

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

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

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

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

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

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

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

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

7371 次点击
所在节点    程序员
38 条回复
WispZhan
2015-03-12 21:12:14 +08:00
编码之前 必须 先设计,设计之前 必须 分析
typcn
2015-03-12 21:13:37 +08:00
写一段就测试一下。。
lightening
2015-03-12 21:17:35 +08:00
多写测试……
sammo
2015-03-12 22:09:42 +08:00
尝试所谓的最佳实践,然后开发自己的最佳实践。
dreamtrail
2015-03-12 22:53:56 +08:00
因为你不可能总在造轮子,所以哪怕你是再优秀的程序员,有时候也会踩上别人埋的地雷。。
spacewander
2015-03-12 23:23:38 +08:00
大神程序员是看了资深程序员走了哪条路,所以才不会触发地雷的……
xdeng
2015-03-13 00:36:06 +08:00
你一定不是程序员
liuhanyang0
2015-03-13 09:16:20 +08:00
@Alex_L TDD不会加快编程速度,而且只是一种辅助。你会发现写得最好的程序都没有单元测试,比如linux kernel、lua。
liuhanyang0
2015-03-13 09:18:19 +08:00
@WispZhan 这正是《代码大全》的观点,深表认同。
liuhanyang0
2015-03-13 09:18:49 +08:00
@sammo 深表认同
jokester
2015-03-13 09:19:22 +08:00
deadly correct
liuhanyang0
2015-03-13 11:17:28 +08:00
@xdeng 看看我博客就知道我是不是
yxzblue
2015-03-13 13:51:20 +08:00
@hahastudio 说得好~
liuhanyang0
2015-03-13 14:14:21 +08:00
@zhc 最关键是自己浑然不觉,不知道自己不知道...
Alex_L
2015-03-15 01:11:40 +08:00
@liuhanyang0 TDD会加快编程速度,主要是分离关注点和缩短反馈周期。在一个大型系统里添加代码,如何确保你的代码按预期执行,测试显然是快速获得反馈的手段之一。REPL Driven也是快速获得反馈的手段之一,不足是没法把断言持久化。

另外TDD不等于测试,测试也不等于单元测试。这几个都要分开说了。自动化测试已经是现代软件开发的最佳实践没什么好质疑的,Linux也有人做专门的自动化测试。Linux kernel的source code我看过一些,算不上"最好"
liuhanyang0
2015-03-15 09:11:30 +08:00
@Alex_L 我的意思是,一个人代码写得好,TDD不是核心。
另外,分享一下你看过最好的源码?
Alex_L
2015-03-15 10:24:31 +08:00
@liuhanyang0 当然不是,这是一句无比正确的话,同样也可以套到,一个人代码写得好,编程语言/编辑器/算法/模式/编程风格不是核心...

不是说举几个代码质量比Linux高的就是最好的代码了,只是Linux源码质量参差不齐,很多地方dirty and hack,我想不通从哪个维度评价Linux源码能算最好
liuhanyang0
2015-03-16 10:00:00 +08:00
@Alex_L TDD在业务多变的领域不适用,比如游戏业务。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/176264

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX