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

播客“内核恐慌”某期中提到: TDD 是平庸者的保障。。。。是么?

  •  
  •   Feiox ·
    feiox · 2015-07-11 21:46:00 +08:00 · 6268 次点击
    这是一个创建于 3421 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在我所见到的无论是闭源还是开源代码中,甚至像 redis 、 requests 这种公认的高质量代码中,都会看到一个文件夹叫 tests。那么,是因为这些作者也是所谓的“平庸者”?
    节目中说的,主播们不喜欢写测试,还提到上古时代,Hack God 们大概可能也不写测试。那么,这两位主播的水平又是在哪一个层次上呢?

    44 条回复    2015-07-13 13:33:39 +08:00
    engHacker
        1
    engHacker  
       2015-07-11 21:50:42 +08:00
    在生产环境中,如果不测试,我只能呵呵。人不要太自信。尤其是涉及到钱的软件,如果不测试,出了问题,那就是灾难。
    hahastudio
        2
    hahastudio  
       2015-07-11 21:52:37 +08:00
    如果软件真要成为工业,就必须要有测试。
    feikaras
        3
    feikaras  
       2015-07-11 21:55:04 +08:00 via iPad
    呵呵
    johnsmith123
        4
    johnsmith123  
       2015-07-11 21:55:49 +08:00
    LZ 我看你骨骼惊奇,为何不去做测试?
    Feiox
        5
    Feiox  
    OP
       2015-07-11 22:03:54 +08:00
    @johnsmith123 @feikaras 啊?(́◉◞౪◟◉‵)
    bengol
        6
    bengol  
       2015-07-11 22:05:35 +08:00
    比较认同这个观点
    Comphuse
        7
    Comphuse  
       2015-07-11 22:06:11 +08:00
    没听过节目,单从“TDD 是平庸者的保障”这句话看来没问题啊。就像“好记性不如烂笔头”只对普通人成立,那种拥有照相机记忆的天才不需要。
    参考: http://www.zhihu.com/question/29047376/answer/43224089 。链接里那种人就算不写测试也比普通人捅篓子的概率低一百倍。
    kaichen
        8
    kaichen  
       2015-07-11 22:11:47 +08:00   ❤️ 1
    开源项目的作者写自动化测试不是因为他们平庸,而是担心其他人(有可能是平庸之辈)把他写的代码搞坏好吗?

    有时别人一个 Pull Request 过来,先跑一下看看有没有把自己的代码搞坏,然后再看他做了什么,有没有道理。

    另外,TDD 和自动化测试也是两个概念好吧?
    yangxiongguo
        9
    yangxiongguo  
       2015-07-12 00:58:34 +08:00
    大部分人是平庸者滴,要认清这点。
    FrankFang128
        10
    FrankFang128  
       2015-07-12 01:00:11 +08:00
    楼主的逻辑很奇怪。
    你这样想吧:
    TDD 比非 TDD 多一项功能:保障平庸者。
    ibremn
        11
    ibremn  
       2015-07-12 01:06:10 +08:00
    TDD 和 tests 不是一回事儿。
    另外楼主你逻辑有问题。
    elvba
        12
    elvba  
       2015-07-12 01:47:13 +08:00
    没错啊,因为我们大部分人都是平庸者……
    crayygy
        13
    crayygy  
       2015-07-12 08:35:06 +08:00 via iPhone
    不写测试的有两种人
    一种人牛到不需要测试,他自己就足以保障代码质量。
    还有一种人……不提也罢
    ltm
        14
    ltm  
       2015-07-12 09:27:14 +08:00   ❤️ 2
    TDD 应该是Test-Driven Development吧,先写测试,然后让程序通过测试,再迭代。
    TDD和Unit Test是两码子事。
    raptor
        15
    raptor  
       2015-07-12 09:28:08 +08:00
    @crayygy 不幸的是:后者是大多数,但他们却总以为自己是前者…
    zhigang1992
        16
    zhigang1992  
       2015-07-12 09:31:35 +08:00 via Android
    没有测试,敢重构么?
    就算自己写的代码,三个月后还认识么?

    测试还可以当文档看。

    TDD还有一个好处就是然你先考虑接口,再考虑实现
    williamx
        17
    williamx  
       2015-07-12 10:52:40 +08:00
    “TDD 是平庸者的保障”这句话本事是完全正确的。当软件开发从个人精英发展成工业团队之后,从事这个工作的大部分员工都是“平庸”的普通人,如何保障他们的出产的品质是很有必要的一件事情。
    pH
        18
    pH  
       2015-07-12 10:57:07 +08:00
    最开始看标题以为是说TDD和FDD。LOL
    101
        19
    101  
       2015-07-12 11:07:02 +08:00
    明显有问题,单打独斗可以不写,开源项目能保证所有 contributor 都提交无 bug 代码?更不要提公司团队合作了,不是天才们变平庸了,而是开发方式变了,这个时代的需求和演进速度都不一样。
    东施效颦还是变不了西施
    Shared
        20
    Shared  
       2015-07-12 11:52:54 +08:00
    这个世界本来就没那么多天才,承认自己是个平庸者也不会死
    Javescript
        21
    Javescript  
       2015-07-12 12:21:33 +08:00   ❤️ 1
    内核恐慌是给外行和新手听的,你们不要太认真。
    Numbcoder
        22
    Numbcoder  
       2015-07-12 12:29:42 +08:00
    「节目中说的,主播们不喜欢写测试」
    呵呵!
    以为自己不写测试,自己就不是平庸者了?
    背上纹条龙,自己就是黑帮老大了?
    anoymoux
        23
    anoymoux  
       2015-07-12 12:46:13 +08:00 via iPad
    测试在大多数情况下是必须的,但TDD是个垃圾…
    samael
        24
    samael  
       2015-07-12 13:38:17 +08:00 via iPad
    正常,大部分人都不会承认自己平庸,以为自己水平在平均以上
    cc7756789
        25
    cc7756789  
       2015-07-12 13:58:38 +08:00
    可惜这些开源项目不是光光作者自己一个人用,而是有很多不同的水平的人或不同大小的项目在用,所以必要的东西即使可能没必要也得有必要。
    jziwenchen
        26
    jziwenchen  
       2015-07-12 14:06:17 +08:00
    认可自己的平庸 然后多写测试就好了;
    some0ne
        27
    some0ne  
       2015-07-12 14:07:42 +08:00
    TDD和Unit Test是两回事,不写测试是不可接受的,在一个完整的开发流程中。

    推荐这篇文章: http://coolshell.cn/articles/3649.html
    karloku
        28
    karloku  
       2015-07-12 14:14:55 +08:00
    TDD BDD这种东西在弄大型项目的时候, 确实让项目变得可控很多

    至于个人项目或者社区项目的话tdd不是找不自在吗...
    ivvei
        29
    ivvei  
       2015-07-12 14:26:19 +08:00
    有测试又不等于TDD。两者差别大了去了。
    asj
        30
    asj  
       2015-07-12 14:42:49 +08:00 via iPad
    TDD暂且不谈
    关于平庸,建议看看这篇文章
    http://blog.codinghorror.com/the-ten-commandments-of-egoless-programming/
    msg7086
        31
    msg7086  
       2015-07-12 15:08:42 +08:00
    DHH写过文章:TDD不行,还是写测试吧。
    railgun
        32
    railgun  
       2015-07-12 16:01:09 +08:00
    真正的老司机不需要ABS,不需要刹车助力。但是真正的老司机知道不是每次开车的都是老司机……
    anthonyeef
        33
    anthonyeef  
       2015-07-12 16:31:44 +08:00
    Hi,不妨贴上链接地址?想听听主播到底是怎么描述的。
    towser
        34
    towser  
       2015-07-12 16:40:23 +08:00
    测试和测试驱动开发是两回事。提出一个观点就要被质疑水平和层次,您国代码猴个个都比别人牛逼。
    tt7
        35
    tt7  
       2015-07-12 18:09:07 +08:00
    "TDD 是平庸者的保障", 并不代表不平庸者就不用 TDD, 也不代表不用 TDD 的就是“非凡”者。这句话基本就是一句用来装逼的废话。
    icylogic
        36
    icylogic  
       2015-07-12 19:14:26 +08:00
    主播们不喜欢写测试? 假如不是断章取义, 那知乎每天提问题也是找到一个解释了...
    reusFork
        37
    reusFork  
       2015-07-12 19:20:15 +08:00
    凡是人都会犯错误,这是人的生理特性决定的。认为自己永不犯错,只有一个原因就是自大。
    不写测试,只是自大的庸才的做法。
    charlie21
        38
    charlie21  
       2015-07-12 19:57:43 +08:00
    在(用某框架)做 web APP 的时候,TDD 、所谓的多写测试、测试驱动开放 有 2 个优势
    1 避免在前期构建时候的过度设计,继而避免重构
    2 在面向黑盒编程时,方便排错
    cxshun
        39
    cxshun  
       2015-07-12 21:39:26 +08:00
    先搞清楚TDD是什么。Test-Driven-Development。先写测试,再让研发根据测试用例去写代码。如果真的是整个项目都这样,那研发真的是基本看着写代码就好,完全不用想什么东西的。

    上面的朋友为什么能回答到有没有必要测试呢?

    普通的测试是必须要有的,开源项目里面的tests是属于自动化测试的范畴,这个是为了避免merge代码之后造成项目问题。跟TDD是完全不同的两个东西。
    Walleve0
        40
    Walleve0  
       2015-07-12 22:20:27 +08:00
    测试驱动开发确实是平庸者的保障,但是软件测试并不是,这是两个不同的问题。
    我认为TDD低估了一个优秀的开发人员的实力,并给了任何有代码编译的人一个定义自己为开发人员的机会。
    如果把大部分精力都花在写测试代码而不重视写产品的代码,那么其意义何在?
    其次TDD的代码你觉得是为了提供了虚假的安全感更多呢,还是为解决软件开发中真正的软件熵的问题做出了实质的贡献。

    个人认为TDD存在的意义仅在于用于工业化的普通程序员的管理。
    falcon05
        41
    falcon05  
       2015-07-12 22:36:32 +08:00 via iPhone
    是的,你说对了 。大神是不需要这套玩意的
    nullcc
        42
    nullcc  
       2015-07-13 08:40:08 +08:00
    个人觉得这话本质上没什么大错,不过不要过分解读,弄成某些情况的充要条件就过了。
    LedChang
        43
    LedChang  
       2015-07-13 10:47:14 +08:00
    TDD真的好么,我一直感觉TDD是从ACM来的灵感。。。。
    njutree
        44
    njutree  
       2015-07-13 13:33:39 +08:00
    不写测试要嘛因为很简单,要嘛因为mock很难,要嘛因为很懒,要嘛因为太年轻。除此之外,胡乱加标签是什么鬼,写测试就是因为资质平庸?我是不是可以说“盔甲是平庸者的保障,真正的武侠高手不需要”,现实不是玄幻小说,有时你看到了现象但它不一定是原因。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1374 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 23:52 · PVG 07:52 · LAX 15:52 · JFK 18:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.