中美程序员数量对比如何做到『编程速度又快,Bug 数量又少』

程序员如何能做到编程速度快、Bug少?
  有网友在 Quora 提问:如何把自己训练得『编程速度又快,Bug 数量又少』?下面是 Glyn Williams 的回复很精彩,4.5 k 赞。  三个程序员被要求穿过一片田地,到达另一侧的房子。  菜鸟程序员目测了一下之间很短的距离,说:“不远!我只要十分钟。”  资深程序员看了一眼田地,想了一会,说:“我应该能在一天内过去。”菜鸟程序员很惊讶。  大神程序员看了一眼田地,说:“看起来要十分钟,但我觉得十五分钟应该够了。” 资深程序员冷笑了一声。  菜鸟程序员出发了,但只过了一会,地雷爆炸了,炸出了巨大的洞。这下他必须偏移预定的路线,原路返回,反复尝试穿过田地。最后他花了两天到达目的地,到的时候颤颤发抖,还受了伤。  资深程序员一出发就匍匐前进,仔细地拍打地面,寻找地雷,只有在安全的时候才前进。他在一天的时间内小心谨慎地缓慢爬过了这片地,只触发了几个地雷。  大神程序员出发之后径直穿过了田地,十分果断。他只用了十分钟就到了另一边。  “你是怎么做到的?”另外两个人问道,“那些地雷怎么没有伤到你?”  “很简单,”他回答道,“我最初就没有埋地雷。”  当我们遇到我们(或其他人)给自己埋下的逻辑炸弹,编程会变得很困难。我们天天在编写逻辑炸弹。它们就在地表下静静地待着,等着爆炸。一旦爆炸,通常就带来不可预测的严重后果。  随着新的代码模块被加入到项目中,项目的复杂度会上升。这种上升不是线性的,而是呈某种指数形式。  程序员的精力是一种有限的资源,所以这种爆炸式增长的复杂度最终会淹没程序员。你的大脑最终会不堪重负,这是一个转折点。  这就是炸弹开始爆炸的时刻。有各种各样的炸弹:在遍历时修改数组,数组下标偶尔变成负数,另一个线程在你的函数执行的起点和终点中间改变对象的状态。轰,轰,轰……  我认为最快捷可靠的程序设计需要培养一种避免这些问题的风格。  编写明确表达行为的代码。选择有意义、准确、无歧义的符号名字。严格执行命名方案,不要用不同的单词描述同一个事物。  如果有,采用最简单的解决方案。不要为速度优化,而是为可读性和透明度优化。  如果你在最初编写代码时没有注意可重用性,不要欺骗自己相信代码可以很神奇地被重用。相反,应该从一种情形着手,保持代码的具体性。如果值得修改代码让它一般化,那么应该做好彻底重写的准备。
(责任编辑:HN666)
科技精品推荐
每日要闻推荐
精彩焦点图鉴
  【免责声明】本文仅代表作者本人观点,与和讯网无关。和讯网站对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。请读者仅作参考,并请自行承担全部责任。程序员如何做到「编程速度又快, Bug 数量又少」?
09:19:54 +08:00 · 6014 次点击
三个程序员被要求穿过一片田地,到达另一侧的房子。
菜鸟程序员目测了一下之间很短的距离,说:“不远!我只要十分钟。”
资深程序员看了一眼田地,想了一会,说:“我应该能在一天内过去。”菜鸟程序员很惊讶。
大神程序员看了一眼田地,说:“看起来要十分钟,但我觉得十五分钟应该够了。” 资深程序员冷笑了一声。
菜鸟程序员出发了,但只过了一会,地雷爆炸了,炸出了巨大的洞。这下他必须偏移预定的路线,原路返回,反复尝试穿过田地。最后他花了两天到达目的地,到的时候颤颤发抖,还受了伤。
资深程序员一出发就匍匐前进,仔细地拍打地面,寻找地雷,只有在安全的时候才前进。他在一天的时间内小心谨慎地缓慢爬过了这片地,只触发了几个地雷。
大神程序员出发之后径直穿过了田地,十分果断。他只用了十分钟就到了另一边。
“你是怎么做到的?”另外两个人问道,“那些地雷怎么没有伤到你?”
“很简单,”他回答道,“我最初就没有埋地雷。”
38 回复 &| &直到
10:00:00 +08:00
& & 09:30:16 +08:00
Why don't you try REPL Driven Development?
PS: REPL is Read-Eval-Print-Loop
& & 09:33:34 +08:00
(“hello world\n”);
& & 09:40:18 +08:00
写完之后做时光机回去干掉以前的自己
& & 09:49:31 +08:00
@ 大小写不正确,没有标点,并且会存在编译错误,因为使用的是全角符号。
& & 10:50:13 +08:00
@ Great mind think alike
& & 10:52:51 +08:00
和做到 “作业写得又快 错误又少” 不是一回事吗
& & 12:01:42 +08:00 via Android
不写不就没错误了么
& & 12:05:43 +08:00
能真正理解这个故事的人肯定是优秀程序员, 效率不好的程序员真的是被自己挖的坑搞得不可开交.
& & 12:48:32 +08:00
& & 12:56:11 +08:00
说实话没看懂大神和资深的区别。。。
& & 15:28:01 +08:00
@ 作业不需要维护
& & 15:31:13 +08:00
@ 我身边就有很多资深程序员(10年经验以上),经历过有光环的项目,但写出来的代码还是布满地雷
& & 15:31:58 +08:00
@ 但经常会感叹于他们躲雷功夫的高深
& & 16:02:40 +08:00
@ 有理有据,让人信服
& & 17:12:24 +08:00
有时候粗心会犯低级错误,该怎么避免,现在我就是多测试,但难免有漏网之鱼
& & 20:37:01 +08:00
马儿如何跑的又快,又不吃草?
& & 20:41:30 +08:00
& & 20:51:00 +08:00
TDD既能加快编程速度,又能减少bug,还不会给后人埋地雷。
& & 21:01:12 +08:00
& & 21:07:04 +08:00
@ good idea
& & 21:12:14 +08:00
编码之前 必须 先设计,设计之前 必须 分析
& & 21:13:37 +08:00
写一段就测试一下。。
& & 21:17:35 +08:00
多写测试……
& & 22:09:42 +08:00
尝试所谓的最佳实践,然后开发自己的最佳实践。
& & 22:53:56 +08:00
因为你不可能总在造轮子,所以哪怕你是再优秀的程序员,有时候也会踩上别人埋的地雷。。
& & 23:23:38 +08:00
大神程序员是看了资深程序员走了哪条路,所以才不会触发地雷的……
& & 00:36:06 +08:00 via iPhone
你一定不是程序员
& & 09:16:20 +08:00
@ TDD不会加快编程速度,而且只是一种辅助。你会发现写得最好的程序都没有单元测试,比如linux kernel、lua。
& & 09:18:19 +08:00
@ 这正是《代码大全》的观点,深表认同。
& & 09:18:49 +08:00
@ 深表认同
& & 09:19:22 +08:00
deadly correct
& & 11:17:28 +08:00
@ 看看我博客就知道我是不是
& & 13:51:20 +08:00
& & 14:14:21 +08:00
@ 最关键是自己浑然不觉,不知道自己不知道...
& & 01:11:40 +08:00
@ TDD会加快编程速度,主要是分离关注点和缩短反馈周期。在一个大型系统里添加代码,如何确保你的代码按预期执行,测试显然是快速获得反馈的手段之一。REPL Driven也是快速获得反馈的手段之一,不足是没法把断言持久化。
另外TDD不等于测试,测试也不等于单元测试。这几个都要分开说了。自动化测试已经是现代软件开发的最佳实践没什么好质疑的,Linux也有人做专门的自动化测试。Linux kernel的source code我看过一些,算不上&最好&
& & 09:11:30 +08:00
@ 我的意思是,一个人代码写得好,TDD不是核心。
另外,分享一下你看过最好的源码?
& & 10:24:31 +08:00 via iPhone
@ 当然不是,这是一句无比正确的话,同样也可以套到,一个人代码写得好,编程语言/编辑器/算法/模式/编程风格不是核心...
不是说举几个代码质量比Linux高的就是最好的代码了,只是Linux源码质量参差不齐,很多地方dirty and hack,我想不通从哪个维度评价Linux源码能算最好
& & 10:00:00 +08:00
@ TDD在业务多变的领域不适用,比如游戏业务。
& · & 2151 人在线 & 最高记录 3541 & · &
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.1 · 22ms · UTC 00:53 · PVG 08:53 · LAX 17:53 · JFK 20:53? Do have faith in what you're doing.有网友在 Quora 提问:如何把自己训练得『编程速度又快,Bug 数量又少』? Glyn Williams 的回复很精彩,4.5 k 赞。
伯乐在线的译文:
关于伯乐头条
专注于IT互联网,分享业界动态。
新浪微博:
推荐微信号
(加好友请注明来意)
- 好的话题、有启发的回复、值得信赖的圈子
- 分享和发现有价值的内容与观点
- 为IT单身男女服务的征婚传播平台
- 优秀的工具资源导航
- 翻译传播优秀的外文文章
- 国内外的精选博客文章
- UI,网页,交互和用户体验
- 专注iOS技术分享
- 专注Android技术分享
- JavaScript, HTML5, CSS
- 专注Java技术分享
- 专注Python技术分享
& 2018 伯乐在线大神也是修炼而来的,不是一开始就是大神。

我要回帖

更多关于 2017 程序员 数量 的文章

 

随机推荐