V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
liuhanyang0
V2EX  ›  程序员

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

  •  1
     
  •   liuhanyang0 · 2015-03-12 09:19:54 +08:00 · 7507 次点击
    这是一个创建于 3535 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

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

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

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

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

    38 条回复    2015-03-16 10:00:00 +08:00
    Arrowing
        1
    Arrowing  
       2015-03-12 09:30:16 +08:00   ❤️ 2
    Why don't you try REPL Driven Development?
    PS: REPL is Read-Eval-Print-Loop
    init
        2
    init  
       2015-03-12 09:33:34 +08:00
    printf (“hello world\n”);
    hahastudio
        3
    hahastudio  
       2015-03-12 09:40:18 +08:00
    写完之后做时光机回去干掉以前的自己
    zealic
        4
    zealic  
       2015-03-12 09:49:31 +08:00   ❤️ 1
    @init 大小写不正确,没有标点,并且会存在编译错误,因为使用的是全角符号。
    crayhuang
        5
    crayhuang  
       2015-03-12 10:50:13 +08:00
    @init Great mind think alike
    zhouquanbest
        6
    zhouquanbest  
       2015-03-12 10:52:51 +08:00
    和做到 “作业写得又快 错误又少” 不是一回事吗
    Laobai
        7
    Laobai  
       2015-03-12 12:01:42 +08:00 via Android
    不写不就没错误了么
    zhc
        8
    zhc  
       2015-03-12 12:05:43 +08:00
    能真正理解这个故事的人肯定是优秀程序员, 效率不好的程序员真的是被自己挖的坑搞得不可开交.
    rubygohell
        9
    rubygohell  
       2015-03-12 12:48:32 +08:00
    当老板
    shyrock
        10
    shyrock  
       2015-03-12 12:56:11 +08:00
    说实话没看懂大神和资深的区别。。。
    liuhanyang0
        11
    liuhanyang0  
    OP
       2015-03-12 15:28:01 +08:00
    @zhouquanbest 作业不需要维护
    liuhanyang0
        12
    liuhanyang0  
    OP
       2015-03-12 15:31:13 +08:00
    @zhc 我身边就有很多资深程序员(10年经验以上),经历过有光环的项目,但写出来的代码还是布满地雷
    liuhanyang0
        13
    liuhanyang0  
    OP
       2015-03-12 15:31:58 +08:00
    @liuhanyang0 但经常会感叹于他们躲雷功夫的高深
    liuhanyang0
        14
    liuhanyang0  
    OP
       2015-03-12 16:02:40 +08:00
    @Laobai 有理有据,让人信服
    dingz
        15
    dingz  
       2015-03-12 17:12:24 +08:00
    有时候粗心会犯低级错误,该怎么避免,现在我就是多测试,但难免有漏网之鱼
    jsyangwenjie
        16
    jsyangwenjie  
       2015-03-12 20:37:01 +08:00   ❤️ 1
    马儿如何跑的又快,又不吃草?
    invite
        17
    invite  
       2015-03-12 20:41:30 +08:00
    哦。
    Alex_L
        18
    Alex_L  
       2015-03-12 20:51:00 +08:00
    TDD既能加快编程速度,又能减少bug,还不会给后人埋地雷。
    luoluoluo
        19
    luoluoluo  
       2015-03-12 21:01:12 +08:00
    xiaozi
        20
    xiaozi  
       2015-03-12 21:07:04 +08:00
    @Arrowing good idea
    WispZhan
        21
    WispZhan  
       2015-03-12 21:12:14 +08:00
    编码之前 必须 先设计,设计之前 必须 分析
    typcn
        22
    typcn  
       2015-03-12 21:13:37 +08:00
    写一段就测试一下。。
    lightening
        23
    lightening  
       2015-03-12 21:17:35 +08:00
    多写测试……
    sammo
        24
    sammo  
       2015-03-12 22:09:42 +08:00
    尝试所谓的最佳实践,然后开发自己的最佳实践。
    dreamtrail
        25
    dreamtrail  
       2015-03-12 22:53:56 +08:00
    因为你不可能总在造轮子,所以哪怕你是再优秀的程序员,有时候也会踩上别人埋的地雷。。
    spacewander
        26
    spacewander  
       2015-03-12 23:23:38 +08:00
    大神程序员是看了资深程序员走了哪条路,所以才不会触发地雷的……
    xdeng
        27
    xdeng  
       2015-03-13 00:36:06 +08:00 via iPhone
    你一定不是程序员
    liuhanyang0
        28
    liuhanyang0  
    OP
       2015-03-13 09:16:20 +08:00
    @Alex_L TDD不会加快编程速度,而且只是一种辅助。你会发现写得最好的程序都没有单元测试,比如linux kernel、lua。
    liuhanyang0
        29
    liuhanyang0  
    OP
       2015-03-13 09:18:19 +08:00
    @WispZhan 这正是《代码大全》的观点,深表认同。
    liuhanyang0
        30
    liuhanyang0  
    OP
       2015-03-13 09:18:49 +08:00
    @sammo 深表认同
    jokester
        31
    jokester  
       2015-03-13 09:19:22 +08:00
    deadly correct
    liuhanyang0
        32
    liuhanyang0  
    OP
       2015-03-13 11:17:28 +08:00
    @xdeng 看看我博客就知道我是不是
    yxzblue
        33
    yxzblue  
       2015-03-13 13:51:20 +08:00
    @hahastudio 说得好~
    liuhanyang0
        34
    liuhanyang0  
    OP
       2015-03-13 14:14:21 +08:00
    @zhc 最关键是自己浑然不觉,不知道自己不知道...
    Alex_L
        35
    Alex_L  
       2015-03-15 01:11:40 +08:00   ❤️ 1
    @liuhanyang0 TDD会加快编程速度,主要是分离关注点和缩短反馈周期。在一个大型系统里添加代码,如何确保你的代码按预期执行,测试显然是快速获得反馈的手段之一。REPL Driven也是快速获得反馈的手段之一,不足是没法把断言持久化。

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

    不是说举几个代码质量比Linux高的就是最好的代码了,只是Linux源码质量参差不齐,很多地方dirty and hack,我想不通从哪个维度评价Linux源码能算最好
    liuhanyang0
        38
    liuhanyang0  
    OP
       2015-03-16 10:00:00 +08:00
    @Alex_L TDD在业务多变的领域不适用,比如游戏业务。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1500 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 17:18 · PVG 01:18 · LAX 09:18 · JFK 12:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.