您好!
欢迎来到京东云开发者社区
登录
首页
博文
课程
大赛
工具
用户中心
开源
首页
博文
课程
大赛
工具
开源
更多
用户中心
开发者社区
>
博文
>
Being Agile!单测灵魂三问和童子军法则
分享
打开微信扫码分享
点击前往QQ分享
点击前往微博分享
点击复制链接
Being Agile!单测灵魂三问和童子军法则
自猿其说Tech
2021-01-12
IP归属:未知
987浏览
前端
计算机编程
大数据
**最近,我和几个伙伴与部门近百位开发同学讨论了单元测试的话题,总结下来,一共有三问:** #### 一、关于单测的灵魂三问 1. 没有时间写单元测试,怎么办? 2. 祖传代码很难写,怎么办? 3. 外部依赖、数据库依赖怎么搞? 把这三问放在这里,先跟大家同步一下敏捷勇敢者俱乐部的“单元测试巡洋舰”近两周的巡逻具体情况。 #### 二、单元测试巡洋舰是什么? 这是一个敏捷志愿者团队,由研发团队中对代码技艺有着精益追求且在单元测试上有着持续实践的同学组成。他们是: 高鹏、刘海鸣、周仑、王重阳、鞠万奎、王亚光; ##### 这个小团队的目标是: 提升部门单测意识、认知;帮助团队发展单测能力,为团队建立高效果的持续集成奠定基础。 #### 三、单元测试巡逻情况 根据邀请,舰队与十个团队(A、B……K)的单测框架、代码及问题进行了交流,最终结果整理如下:  **大家可以看到:** 1. 70%的团队都不是基于方法级的单测;这里存在一方面对单测的粒度认知不准确;另一方面也存在在祖传代码上单测比较困难的情况。 2. 70%的单测无法自动化,这大大的降低了单测的价值。 3. 在如何将单测做的更加彻底,我们还有很大的提升空间。(舰队会给Demo,欢迎提供Demo) 4. 单测代码也是代码,也需要设计和代码规范,目前我们做的还不够。 #### 四、灵魂三问怎么解? ##### 灵魂三问第一问:没有时间怎么办? 这里不想谈单测会提升质量,从整体上看做了比不做没有增加多的时间;有效的单测是唯一可以保证完整覆盖度的方法以及单测对个人代码设计能力的提升的价值等等 “没有时间”这句话太耳熟:没有时间做用研、没有时间做设计、没有时间回顾、没有时间看书、没有时间锻炼、没有时间给家里打电话、没有时间剪头发…… **这就是个死循环:赶工,没时间单测->代码质量不高->新需求、需求变更费劲,需要更多时间->没有时间写单测;** 这个问题有没有解,有的,后面会告诉你,我们先看一个访谈: 在这波沟通中,有一个同学的单测被巡洋舰的同学一致称赞;他写了很多有效的单测,同时,自己的提交质量也一直很不错;我问他,单测会不会花很多时间?他说:只要代码做了设计,单测就不会花时间;你看:单测会倒逼代码设计。 **如果问:给你时间投入在改bug和写有设计有质量的代码,你愿意选哪个?我想聪明的你一定会选后者吧。** 所以,我们强调单测,本质上是在强调设计。 ##### 灵魂三问第二问:祖传代码怎么办? 写祖传代码的前辈有两种: 1. 无论是设计还是业务,代码里总有能让你很容易学习的地方 2. 一坨坨代码,让你挖空心思解迷也不得其所 **这灵魂第二问,我先问你,你要当哪种前辈?** 如果是第一种,面对祖传代码,有个童子军法则,我要送给你和你的团队,不仅能解决这个问题,还能顺便把第一个问题解决了! **童子军法则:当你离开一个露营地时,一定要让它比你来的时候更整洁一点!** 这句话放到编码工作中理解如下: 1. 任何时候,自己不要写烂代码—— 自律并追求自我要求 2. check in之前修改一些烂代码—— 做出你的贡献,当然改烂代码前要先写单测,进行保护 3. 修改多少,量力而行——顺手做,积少成多 **回到上面“死循环”的问题,当什么都不做的时候,势必被循环夹裹着,不会有任何的变化,只能越来越累;如果你做一点点改变,你和团队每天都做一点点改变,代码质量一定会改变,这个循环慢慢就被解开了。** 所谓:日拱一卒,功不唐捐! 灵魂三问第三问是个技术问题,我们在《单测认知篇》有说明,后续也会增加源码Demo,请持续关注。 希望每个三级部门都能把这条童子军法则贯彻起来,辅助代码扫描工具的数据,看到团队代码质量的持续的改进! ------------ ###### Being Agile 京东物流技术发展部效能提升部 ###### 作者:效能提升部 宋宁 
原创文章,需联系作者,授权转载
上一篇:对比 Vitess,ShardingSphere 有哪些不同
下一篇:Apache ShardingSphere整合Seata AT分布式事务
相关文章
前端十年回顾 | 漫画前端的前世今生
Taro小程序跨端开发入门实战
【技术干货】企业级扫描平台EOS关于JS扫描落地与实践!
自猿其说Tech
文章数
426
阅读量
2241201
作者其他文章
01
深入JDK中的Optional
本文将从Optional所解决的问题开始,逐层解剖,由浅入深,文中会出现Optioanl方法之间的对比,实践,误用情况分析,优缺点等。与大家一起,对这项Java8中的新特性,进行理解和深入。
01
Taro小程序跨端开发入门实战
为了让小程序开发更简单,更高效,我们采用 Taro 作为首选框架,我们将使用 Taro 的实践经验整理了出来,主要内容围绕着什么是 Taro,为什么用 Taro,以及 Taro 如何使用(正确使用的姿势),还有 Taro 背后的一些设计思想来进行展开,让大家能够对 Taro 有个完整的认识。
01
Flutter For Web实践
Flutter For Web 已经发布一年多时间,它的发布意味着我们可以真正地使用一套代码、一套资源部署整个大前端系统(包括:iOS、Android、Web)。渠道研发组经过一段时间的探索,使用Flutter For Web技术开发了移动端可视化编程平台—Flutter乐高,在这里希望和大家分享下使用Flutter For Web实践过程和踩坑实践
01
配运基础数据缓存瘦身实践
在基础数据的常规能力当中,数据的存取是最基础也是最重要的能力,为了整体提高数据的读取能力,缓存技术在基础数据的场景中得到了广泛的使用,下面会重点展示一下配运组近期针对数据缓存做的瘦身实践。
最新回复
丨
点赞排行
共0条评论
自猿其说Tech
文章数
426
阅读量
2241201
作者其他文章
01
深入JDK中的Optional
01
Taro小程序跨端开发入门实战
01
Flutter For Web实践
01
配运基础数据缓存瘦身实践
添加企业微信
获取1V1专业服务
扫码关注
京东云开发者公众号