感觉在这里 TDD 不是很受欢迎啊

2018-04-13 08:43:47 +08:00
 asj

有没有特别的原因啊?

发个自己用 TDD 解 leetcode 题目的练习

https://www.bilibili.com/video/av21007067/

欢迎拍砖。

10890 次点击
所在节点    程序员
64 条回复
ericls
2018-04-13 12:50:53 +08:00
@feverzsj 大方向可以 有些地方 特别是明明清楚一定要有测试才放心的地方 不如就 TDD 咯……
Phariel
2018-04-13 13:28:08 +08:00
个人是反 TDD 党 随着 IDE 的不断增强类型检查不断深入以及语言越来越成熟 在代码层面出错的概率已经降低了很多 现在出错的大多是数据层面的东西 你数据开发的时候 mock 的再好也挡不住上线出幺蛾子 这就得快速上线→让用户来测→快速迭代来保证
hu6360567
2018-04-13 13:29:17 +08:00
我们开发一般都是 DDD,deadline driven
we000
2018-04-13 13:31:59 +08:00
我个人觉得 TDD 以及很多软件工程的方法, 本质上都是为了保证猴子编码的质量, 把人当猴子当工具, 默认都是低质量的码农.

出于个人兴趣和意愿的话, 很少有人愿意这么搞.
lol173
2018-04-13 13:47:46 +08:00
@chenxytw 有理
chenxytw
2018-04-13 13:56:10 +08:00
@asj
从道理上来说你是对的,但从国内的现实来说,缺少时间的考虑。
维护一份完善的 100%覆盖率的 case 基本上等同于开发一份业务代码了。
国内一大堆赶工的东西,上线后 bug 都一大堆,我甚至都可以想到可能连基本的自测都没有做好了。
让他们去自增差不多一倍工作量去维护 case 简直是天方夜谭 0 0

而且 TDD 也不是一个人做可以不管团队其它人的东西,只要一个人没有按照 TDD 来搞,就很可能导致 TDD 执行不下去。
chenxytw
2018-04-13 14:08:49 +08:00
@qile1 额,TDD 的前提当然是你能有一个跑通 case 的环境。
假设这个环境有了,那么 case 简单点划分可以是
case 1. 正常情况
1.1 dcm 路径指向文件是否存在
1.2 png 文件是否存在
1.3 jpg 文件是否存在
1.4 另一台 ftp 文件是否存在
1.5 mssql 中 ftp 记录
case 2-n. 异常情况 如果代码中有预期处理异常情况的,相对应的 case

至于实现测试代码的方式很多,
mock 呀,甚至自己单独写一份测试代码都可以
asj
2018-04-13 14:12:40 +08:00
@we000 嗯,同意。如果是“被 TDD ”的话就是把人当猴子。

我自己做的主要动力是有了测试就能重构了,否则整天看糟心的代码又不敢改,有损健康啊。
amon
2018-04-13 14:22:33 +08:00
之前有个帖子是你所在公司开发有多少人,结果都是几个人,甚至一个人的。。。

说明 v 友所在小公司居多,还没有养成习惯的。
czzhengkw
2018-04-13 14:29:41 +08:00
TDD 的意义在于修 bug、加 feature、重构代码的时候,不至于影响到原来的功能,也就是不会引入新的 bug ……



@hu6360567 DDD 跟 TDD 不是同一种类型的概念……
DDD 更多的是把需求变成可用代码表达的东西,当然它也提倡 TDD ……
@we000 事实上当公司假设员工都是高质量的码农的时候,出问题的机率更高。而且,能掌握 TDD 的码农,都是工程师,他们的工程思维更强,写的代码质量更高
chenchangjv
2018-04-13 14:57:36 +08:00
我还以为是……时分复用,又要炮轰移动了呢
Martin9
2018-04-13 15:09:45 +08:00
键盘控制鼠标好用么,准确度啥的。。
asj
2018-04-13 15:13:13 +08:00
@Martin9 不好用啊,鼠标还是实际鼠标移动啊。
AntiGameZ
2018-04-13 15:30:39 +08:00
TDD 对工具,平台的要求太高了。很多时候配个持续集成都磕磕巴巴的公司,或者上了持续集成但是部署基本还是要靠手的情况下,TDD 成了负担而不是解决方案。

程序员如果一周就开一个小时的会,沟通基本靠邮件。有完善的持续集成和可依赖的本地测试环境,写好的代码 commit 后可以不用管的话,估计 TDD/BDD 才会更受欢迎才是。
lance0z
2018-04-13 15:58:32 +08:00
现在大部分纯互联网公司比较注重快速,迭代,即敏捷开发模式。
asj
2018-04-13 16:03:33 +08:00
@lance0z TDD 不是敏捷开发的一项重要实践嘛。

我一直觉得,没自动化测试的敏捷都是假敏捷。
xiaozhizhu1997
2018-04-13 16:45:00 +08:00
难道只有我以为楼主想说中国移动
hantsy
2018-04-13 16:52:51 +08:00
@asj 这个我认同,不写测试,然后搞什么敏捷,CI/CD 自动化都是自欺欺人。
hantsy
2018-04-13 16:58:37 +08:00
@AntiGameZ 真正的 Engineering,几乎要做到 no meeting,。。至于国内沟通还是靠吼的方式,几乎不可能。

TDD 永远不会成为负担,在项目前期,好像写测试走通一个自动化 Pipeline 很费时间,但不写测试的后果是,项目后面花几倍的人力和物力去保证质量,加班就是变成常态了。
lightening
2018-04-13 17:00:57 +08:00
有的事情适合 TDD,比如有明确需求,知道自己要做什么。有的事情不适合 TDD,比如实验性质的科研项目。关键还是要看场景。

我个人会在某些情况下使用 TDD,但不会过分神化 TDD。我并不认为 TDD 适合所有场景。
另外贴一篇反对的声音: http://david.heinemeierhansson.com/2014/tdd-is-dead-long-live-testing.html

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

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

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

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

© 2021 V2EX