敏捷和TDD
第一部分:敏捷实践
敏捷:是一种应对快速变化的需求的一种软件开发能力。更强调程序员团队与业务专家之间的紧密协作、面对面的沟通(认为比书面的文档更有效)、频繁交付新的软件版本、紧凑而自我组织型的团队、能够很好地适应需求变化的代码编写和团队组织方法,也更注重软件开发过程中人的作用。
Story:可以理解为一张简单描述任务的卡片,由于敏捷迭代开发要求快速持续交付,所以要求每一个story是一个尽可能独立的小任务,最佳实践证明每个story1-2人做1-2天。
站会:一般时间早上或者下午,要求每个人称述三件事:1)昨天做了什么?2)有什么问题?3)今天做什么?
codeRevive:第一阶段:不是审代码,是集体听每个提交代码着的思路,方案,审设计问题;第二阶段:审查代码是否可以重构,是否用代码可以替代注释;第三阶段:挑剔,命名不规范,格式缩进等。
新人培养:pair,其实看资料是一个自学任务,重点是怎么快速上手,那就是pair,在做任务时,你写我看,我写你看,交叉。
工具使用:用过一次完整版的Idea,再也不想用eclipse,程序员学会三件事:命令行+免费软件+翻墙工具。
第二部分:TDD(测试驱动开发)
Test:包括UT(开发者)和AT(测试,开发,SE)+自动测试(测试,SE)+其他测试(其他人)
注意点:
1) UT测试必须是幂等的;
2) 统一平台使用统一框架;
3) 写UT纳入代码监视(若纳入监视能够保证质量,但同时写UT必须纳入任务工作量)
4) 最佳实践证明:有用的UT覆盖率只能达到60%左右,若在高,有可能与AT重合,自动化重合等无用的。
测试驱动开发举例:
需求描述:
出租车两公里以内为6元,不超过8公里,每公里收费0.8元,超过后每公里多收0.4元,等待每分钟是0.25元,最终收费四舍五入,实现出租车收费系统。
需求用例分析
用例1:输入:miles=1.1km, waitTime = 2.1minutes 输出:7元
用例2:输入:miles=7km,waitTime = 0minutes 输出:10元
用例3:输入:miles=9km,waitTime=4minutes 输出:13元
用例4:输入:miles=-3km,waitTime= -5minutes,输出:Exception
用例写作(用例全部为红色)
代码实现(所有的用例完全变绿):
代码重构(在上面代码中if等判断可以单独处理),选中代码后快捷键:ctrl+alt+m 出现如下界面:
点击ok后,生成单独方法:
模式设计:
面向对象的三大特征,五项原则,23种设计模式,后面有时间补充。
作者|李小永
- 点赞
- 收藏
- 关注作者
评论(0)