首页
技术博客
PHP教程
数据库技术
前端开发
HTML5
Nginx
php论坛
新用户注册
|
会员登录
PHP教程
技术博客
编程问答
PNG素材
编程语言
前端技术
Android
PHP教程
HTML5教程
数据库
Linux技术
Nginx技术
PHP安全
WebSerer
职场攻略
JavaScript
开放平台
业界资讯
大话程序猿
登录
极速注册
取消
热门标签 | HotTags
vba
controller
cpython
include
install
heatmap
yaml
integer
vbscript
hashset
web3
javascript
c语言
byte
plugins
buffer
datetime
settings
frameworks
keyword
search
instance
java
iostream
callback
select
timezone
jsp
object
int
triggers
char
dockerfile
loops
tags
less
timestamp
heap
hashtable
request
bit
php8
typescript
cmd
uri
main
post
runtime
version
const
text
process
substring
input
join
httprequest
uml
metadata
chat
bitmap
io
nodejs
schema
php7
jar
go
ip
utf-8
hook
bash
command
golang
php5
tree
filter
hash
hashcode
spring
window
当前位置:
开发笔记
>
编程语言
> 正文
任务分解单元测试小步快走,提高开发效率常用的几种方法
作者:天边的云YEAH_988 | 来源:互联网 | 2023-09-05 10:26
先打个招呼,我要介绍一个老朋友,熊节。介绍他的重要原因是,从“大学肄业”到ThoughtWorks总监咨询师,从业18年
先打个招呼,我要介绍一个老朋友,熊节。
介绍他的重要原因是,从“大学肄业”到ThoughtWorks总监咨询师,从业18年,他倡导的敏捷开发影响了包括我在内的一代程序员。
什么才是程序员的核心竞争力?如何提高开发效率?熊节原创,2800字,强烈安利给工作8年以下的程序员:
我是IT界“过气网红”熊节,03年我翻译了《重构》,10年2次改版,卖了80多万本。后来我进ThoughtWorks,做到总监咨询师,主导了华为、中兴的敏捷开发转型。
当年我们开发一款安卓APP,用测试驱动开发的方式,不需要真机、不需要模拟器,在 JVM 上直接跑,180秒跑完 2000+个测试用例,平均每0.09秒跑一个,我们下班回家老婆孩子热炕头时隔壁的大哥们还在写Bug。
这个事情发生在2014年,也让我有了一个新思考,由2个问题构成,
第一,站在个人角度,对一个程序员来讲,996也好、职业发展也好,
核心问题到底是什么?
第二,站在企业角度,为什么像华为中兴这样的大厂,给ThoughtWorks千万级预算,做
敏捷开
发
转型?
第一个问题,我觉得核心解是
开发效率。
带过百人团队,熟悉我的人知道我关心的只有开发效率,方法方式是否smart,都是为开发效率服务。行的上、不行的原地踏步或者离开,这是我一直奉行的标准。
看的人多、时间长就能发现规律,1-3年求发展,3-5年求跳槽,5年以上求破瓶颈。
第二个问题我想把企业和人放在一起讲,
我不知道这些场景有多少人遇到:
1.拿到一个需求,琢磨半天想不明白如何分解,不知道怎么下手;
2.一开始代码没测试,上线后,经常半夜被抓来处理问题,不要问我代码有没有坑,我自己也不知道;
3.项目即将上线,又测出一堆bug,团队连夜加班修,bug越修越多,修到天亮都还没一个靠谱版本;
4.新功能要改动一块老代码,不敢轻易下手改,每做点修改都很害怕。
以上无限循环。
这些问题的本质是——我见过的国内80%的程序员都在凭本能在工作。
开发效率低,
要么低在需求上,要么低在质量上
。这个意思能理解吗?
1.对需求把握不准确,做出来的功能不是客户想要的,必然导致返工。
2.质量缺乏保障,添加新功能就破坏了旧功能,必然导致返工。
两个问题搞定不了,就注定会长期陷入低质量、大量返工的焦油坑。
80%的人凭本能工作,这个事怎么解决?我亲身验证的方法是用
测试驱动开发(TDD)。
TDD的核心在于严格规定开发节奏:没有失败的单元测试就不能写功能代码。
他的逻辑是一次把需求理清,一次做对、消除返工,不用调试就能获得反馈
,节省出的时间远大于编写测试代码而产生的工作量总和。
唯一的不爽,这是一个找虐的过程,他迫使你稳定小步前进,所以每一步都必须先想好要达到什么效果,每一步都有充分的测试覆盖。
里边三个步骤
第一步任务分解:
测试先行,从需求中分离关注点,然后用实例描述需求,用单元测试表达;
第二步单元测试:
遵循 Given-When-Then 三段式,符合极限编程原则;
第三步小步快走
:
此处的坑在于,很多人容易一下写多,导致后面编写的用例直接就能通过,破坏了 TDD 节奏。
掌握了TDD方法,就能解决开发中的
三个老大难:
第一,准确把握需求,开发出来的功能一定是客户想要的;
第二,保障软件质量,开发出来的代码一定是有自动化测试覆盖的。
第三,通过反复训练提高开发速度与代码准确率。
如果你是工作1-3年的新人,想脱颖而出不走弯路,一定要在一开始就学会更高效的编程心法,获得更快成长曲线;
如果你是工作3-5年的老鸟,想寻求技术突破,跳槽一线大厂或求职业晋升,掌握TDD就是你能拿出手和别人竞争的差异点;
如果你是技术leader,想整体提高团队编程效率,这套华为、中兴掏了千万预算才换回的敏捷开发方法,大概率也适合你。
【熊节的测试驱动开发实战营】
从8月8号开始,我会和极客学院一起,把在ThoughtWorks工作13年的经验倾囊相授、亲自带队,训练出一支能在工作中熟练应用TDD的优秀团队,目标是提高40%开发效率。
参照第一期实战营结果,你的预期收益是:
1.
可应用到工作的
测试驱动开发方法;
2.完成3个项目,共计12个任务训练;
3.精准框定需求&练会单元测试功能代码;
4.学会重构,减少修改bug时间;
5.练会测试驱动开发 提高40%工作效率。
相比常见的线上课程,
我会为结果负责,偏重训练,完成从知道到会做的阶段。
以项目“Args”为例。这个题目的复杂度跟日常开发时会接到的一个划分细致、描述清晰的需求大致相当。
任务六:代码“臭”不“臭”
正常完成这个任务的时间是4到5小时,在6月第一期学员里,这个时间是55分钟,并且实现了100%单元测试覆盖。
给你们看看第一期学员的
被虐心得
(内容均来自学员打卡 后有截图),他们当中有新手也有老鸟:
“最大的收获是学习了TDD编程思维,先确立目标再行动,而且行动要一步步快速迭代,确保质量。另外就是了解carbon代码分享为图片这个开源项目,学习了idea的各种快捷键。还了解到了codingdojo这种编程方式,希望能一直坚持下去,不断提高效率(◔◡◔)”
——小白
“FizzBuzz练了大概15遍左右,最后控制在10min内,重新拆解细分后,敲代码时确实更清晰,体会:子任务的拆解很有用,第一次比较粗粒度,第二次梳理了类关系,还要继续练。”
——Paige
“终于做完了最后一题,自我觉得可读性可以了,总结一下收获:
1. 编码节奏和思路更清晰了,原来想很久才敢动手,现在5分钟提交一次,而且有单元测试保证,根本不用担心出错。
2. 对任务的拆分有了更深刻的理解,真正落实成一行行测试。拆分了需求以后,保证了每一步都很小,同时也保证功能很单一,很难出现那种动不动几十行并且逻辑很复杂的代码。
3. 有了单元测试保证,下一步追求更简洁,可读性更高的代码。
感觉这么多天没有白练,编码能力有了很大的进步,感谢这个训练营,拯救了一个以为会写代码的我,以后会在工作中更多的尝试TDD,估计这辈子都离不开它了。”
——林泽欢
“一份需要重构重构再重构的作业,已经基本掌握并熟练使用TDD的节奏,接下来就是学会如何写出舒服的代码!!!继续Kata!!”
——斜杠工程师
“从刚开始的蠢蠢欲动再到持之以恒,确实学到了很多东西,框定需求,识别坏代码,测试先性,marse rover时间花的比较多,代码里还充斥着switch,加强重构。”
——阿贵
“1. 去除重复代码
2. 分割常量抽取
3. 函数替换循环
不断优化,不断改进!”
——陈宇明
“熊老师,我要给你生猴子!”
——某不知名男学员
学员打卡&作业点评记录
事实上,如果不是一对一的电话调研,我很难相信第一期的同学里有这么多高手——
· 前百度教育事业部高级Java工程师 陆羽
· 极客学院技术总负责人 Kevin
· 学而思web开发工程师 李坤
· 小米金融高级前端工程师 李志明
· 华为高级 C++开发工程师 孟广明
· 飞羽科技有限公司CTO 小白
· 支付宝小程序 高级Python工程师秋叶
· 阿里巴巴-java工程师 李若舟
· 拉勾网Python工程师-zhangwl
· ……
通过考核由极客学院颁发证书
除此之外我们还邀请了华为、ThoughtWorks、腾讯、阿里巴巴的HR驻场,为优秀学员提供内推机会。
目标:
①完成全部任务,反复训练,练会驱动测试开发(TDD)
②获得能应用到工作的驱动测试开发技能&经验
③肉眼可见的大幅度提高编程效率
第二期8月8日正式开营,我会把你绑定在极客学院官网学习系统,系统内有图文、视频教学,需要提交作业,需要依次解锁12个任务。
你可以根据自己的实际情况灵活安排学习时间,我全程会在微信群内伴随大家,有班主任负责监督打卡,所有直播均可回放。
根据第一期经验,你完成全部任务预计需要21天。学习有效期1年,支持随时反复观看。
只要您具备初级开发基础,无论您从事的是前端还是后端开发都可以报名,以下是具体内容:
稳定的步伐才能带来长期效益。这也是ThoughtWorks、Google、Facebook、eBay、Pivotal、华为、腾讯、阿里大厂越来越重视敏捷开发,把相关考题放进面试的本质原因。
如你所见,这是一套可以真正落地实操的课程。你的代价是99元,和一起投入训练的宝贵时间,
你将和来自各大IT公司的中高层开发者一起,共同成长,你的选择将让你成为未来中国互联网的中坚力量!
往期线下聚会
你能找到我吗?
不管你是工作1-3年的新人,3-5年的进阶开发者,还是技术leader,你都能通过实战营训练
大幅度提高开发效率
,
尽早加入高手行列,获得更多青睐和更高薪资。
第二期我希望人数控制在1000人以内,
尤其是对刚入行1-3年的新人,
我今年40岁,你们还年轻,只有当你真正经过训练,成为更有价值的程序员时,才会真正理解我现在说的话。
限时报名参加
1. 直播+项目+答疑+训练,【TDD训练营】
限时优惠
99 ¥,原价 ¥129。
2. 8月8号开营,限时优惠,扫码海报立即购买。
限时扫码,一顿饭钱,就能真的提高开发效率,为自己买单。
程序员
jvm
编程
图片
ide
百度
java
web
支付宝小程序
写下你的评论吧 !
吐个槽吧,看都看了
会员登录
|
用户注册
推荐阅读
int
如何利用Java 5 Executor框架高效构建和管理线程池
Java 5 引入了 Executor 框架,为开发人员提供了一种高效管理和构建线程池的方法。该框架通过将任务提交与任务执行分离,简化了多线程编程的复杂性。利用 Executor 框架,开发人员可以更灵活地控制线程的创建、分配和管理,从而提高服务器端应用的性能和响应能力。此外,该框架还提供了多种线程池实现,如固定线程池、缓存线程池和单线程池,以适应不同的应用场景和需求。 ...
[详细]
蜡笔小新 2024-11-07 17:05:32
int
从0到1搭建大数据平台
从0到1搭建大数据平台 ...
[详细]
蜡笔小新 2024-11-12 15:26:03
java
秒建一个后台管理系统?用这5个开源免费的Java项目就够了
秒建一个后台管理系统?用这5个开源免费的Java项目就够了 ...
[详细]
蜡笔小新 2024-11-12 03:21:33
java
阿里巴巴终面技术挑战:如何利用 UDP 实现 TCP 功能?
在阿里巴巴的技术面试中,技术总监曾提出一道关于如何利用 UDP 实现 TCP 功能的问题。当时回答得不够理想,因此事后进行了详细总结。通过与总监的进一步交流,了解到这是一道常见的阿里面试题。面试官的主要目的是考察应聘者对 UDP 和 TCP 在原理上的差异的理解,以及如何通过 UDP 实现类似 TCP 的可靠传输机制。 ...
[详细]
蜡笔小新 2024-11-11 11:50:49
java
全面解析JavaScript代码注释技巧与标准规范
在Web前端开发中,JavaScript代码的可读性和维护性至关重要。本文将详细介绍如何有效地使用注释来提高代码的可读性,并探讨JavaScript代码注释的最佳实践和标准规范。通过合理的注释,开发者可以更好地理解和维护复杂的代码逻辑,提升团队协作效率。 ...
[详细]
蜡笔小新 2024-11-10 15:16:18
java
Ave V8 JavaScript 引擎:持续优化与创新
V8不仅是一款著名的八缸发动机,广泛应用于道奇Charger、宾利Continental GT和BossHoss摩托车中。自2008年以来,作为Chromium项目的一部分,V8 JavaScript引擎在性能优化和技术创新方面取得了显著进展。该引擎通过先进的编译技术和高效的垃圾回收机制,显著提升了JavaScript的执行效率,为现代Web应用提供了强大的支持。持续的优化和创新使得V8在处理复杂计算和大规模数据时表现更加出色,成为众多开发者和企业的首选。 ...
[详细]
蜡笔小新 2024-11-09 15:56:40
int
如何撰写初级和高级前端开发者的专业简历
如何撰写初级和高级前端开发者的专业简历 ...
[详细]
蜡笔小新 2024-11-09 08:36:22
int
观察 | 求职体验:收到录用通知的公司通常不深究技术细节,而那些详细追问的公司往往没有后续进展
观察 | 求职体验:收到录用通知的公司通常不深究技术细节,而那些详细追问的公司往往没有后续进展 ...
[详细]
蜡笔小新 2024-11-08 12:52:17
java
Hadoop 2.6 日志文件解析与MapReduce日志管理深入探讨
Hadoop 2.6 主要由 HDFS 和 YARN 两大部分组成,其中 YARN 包含了运行在 ResourceManager 的 JVM 中的组件以及在 NodeManager 中运行的部分。本文深入探讨了 Hadoop 2.6 日志文件的解析方法,并详细介绍了 MapReduce 日志管理的最佳实践,旨在帮助用户更好地理解和优化日志处理流程,提高系统运维效率。 ...
[详细]
蜡笔小新 2024-11-03 16:23:38
java
开辟支付宝小顺序无从下手?我们给你制造了一条捷径
作为国内首家专注于小顺序范畴的后端云效劳,晓得云正式开启3.0设计——全平台Serverless效劳。「晓得云」cloud.minapp.com,诞生于2017年8月8日,是国内第 ...
[详细]
蜡笔小新 2023-09-17 18:30:37
java
uniapp 框架简介和生命周期
介绍:uni-app使用vue的语法小程序的标签和API。也就是和这些语法同样作用的框架.生命周期,分为应用生命周期和页面生命周期,和小程序的基本一致.流程开发规范为了实现多 ...
[详细]
蜡笔小新 2023-09-16 17:33:07
java
Python 数据可视化实战指南
本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ...
[详细]
蜡笔小新 2024-11-13 06:03:30
jsp
深入解析浏览器内核与版本的发展历程
浏览器作为我们日常不可或缺的软件工具,其背后的运作机制却鲜为人知。本文将深入探讨浏览器内核及其版本的演变历程,帮助读者更好地理解这一关键技术组件,揭示其内部运作的奥秘。 ...
[详细]
蜡笔小新 2024-11-11 13:34:37
java
项目开发中不可或缺的Linux命令详解
在项目开发过程中,掌握一些关键的Linux命令至关重要。例如,使用 `Ctrl+C` 可以立即终止当前正在执行的命令;通过 `ps -ef | grep ias` 可以查看特定服务的进程信息,包括进程ID(PID)和JVM参数(如内存分配和远程连接端口);而 `netstat -apn | more` 则用于显示网络连接状态,帮助开发者监控和调试网络服务。这些命令不仅提高了开发效率,还能有效解决运行时的各种问题。 ...
[详细]
蜡笔小新 2024-11-03 13:59:27
java
小程序搜索,风暴之眼
文|Tech星球(微信ID:tech618)尹非凡一位微信的产品经理告诉Tech星球,据传,在小程序刚做出来的时候,张小龙认 ...
[详细]
蜡笔小新 2023-09-15 20:35:47
天边的云YEAH_988
这个家伙很懒,什么也没留下!
Tags | 热门标签
vba
controller
cpython
include
install
heatmap
yaml
integer
vbscript
hashset
web3
javascript
c语言
byte
plugins
buffer
datetime
settings
frameworks
keyword
search
instance
java
iostream
callback
select
timezone
jsp
object
int
RankList | 热门文章
1
蓝叠模拟器新手引导如何使用?:蓝叠荒野设置
2
华为智慧识屏怎么卸载更新?
3
Excel表头斜线如何制作?同事5秒就搞定,你却还在加班画图
4
魅族16plus中查看已加密便签具体操作步骤
5
习信APP加入学校的具体操作流程
6
人们对于元宇宙的质疑是可以理解的,因为经历了太多类似的场景与画面
7
4个老司机常用的黑科技资源网站
8
亲淘该怎样发图片
9
墙体拉结筋弯钩长度有什么规定?在哪个规范上或图集上有要求?
10
win10如何关闭自带的防病毒杀毒软件
11
matlab游程检验结果分析,SPSS教程学习笔记6:数据随机化游程检验
12
Win10怎么清理磁盘分区?
13
电脑风扇声音大怎么办?具体原因以及解决措施,快速解决!
14
solidworks装备图,solidworks装备图如何爆开
15
给攀枝花的小女孩调唯美效果
PHP1.CN | 中国最专业的PHP中文社区 |
DevBox开发工具箱
|
json解析格式化
|
PHP资讯
|
PHP教程
|
数据库技术
|
服务器技术
|
前端开发技术
|
PHP框架
|
开发工具
|
在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved |
京公网安备 11010802041100号
|
京ICP备19059560号-4
| PHP1.CN 第一PHP社区 版权所有