活动感想
虽然接触TDD已有一段时间,但实践的并不多,所以理解也很浅。在此次活动中,很多同学是第一次接触TDD,也犯了普遍会犯的错误,比如先把所有测试代码全部写完才开始写实现代码,大粒度的测试和忘记重构等。网上也有很多关于TDD的争论,比如: TDD并不是看上去的那么美 敏捷质疑:TDD 如果没有TDD经验,很难看懂他们在说什么,也没有办法参与讨论。所以我们还是先实践吧。
需求
Write a function that returns true or false depending on whether its input integer is a leap year or not. A leap year is defined as one that is divisible by 4, but is not otherwise divisible by 100 unless it is also divisible by 400. For example, 2001 is a typical common year and 1996 is a typical leap year, whereas 1900 is an atypical common year and 2000 is an atypical leap year.
第一版视频
反馈
视频发出后收到了很多的反馈,下面挑一些比较典型的,感谢大家给予的关注的和反馈: Daniel Teng:
多谢Seaborn分享。我来抛一下砖
+ 第一次分享
+ 用IntelliJ
+ 从失败测试开始
+ 有一些算法重构
+ 频繁运行测试
+ 左右和上下分屏,包括把测试放在左边,代码放在右边
- 在视频中加一些文本解释
- 来电激情的背景音乐,最好是钢琴的。
- 用了太多的鼠标和菜单,IntelliJ不停地在提示快捷键ctrl+shift+R已经提醒了22遍
- 使用在IDE中切换、跳转、选择等的快捷键
- 测试函数的名称。我的习惯是,测试函数的名字沟通的是测试的目的,应该代表抽象概念,然后测试体内是使用具体的例子。举一个例子year_2000_is_an_atypical_leap_year。我可能会直接写atypical_leap_year,因为我不想把例子和抽象概念放在一起。想一下,下一个维护测试的人,看到你的case会想,“这个地方只是测了2000年是一个特殊的闰年,那我还要不要看一下3000。。。”
- 把year从测试函数名字中去掉,因为你的测试类名已经在沟通这个概念了
- 不太喜欢calculator这个名字,这不像是一个domain概念。
- 有些步骤跳跃比较大,有一步直接加了if (i % 4 == 0),对我来说相当于同时添加了一个条件判断和一个表达式,步骤有可能比较大。如果kata的话,应该练习小步,或者从if+hard code开始?(当然在这个例子上,我也没有想好好的理由,只不过个人习惯)。
- 修改模板,去掉默认注释,因为那是没用的,source control都会记录这些信息,既然已经有了,而且别人又不会去维护,那为什么不马上去掉?
还不错,有些跳得太快我来不及看,有些有些冗余。
不要简单记录你做的,调整一下节奏,试着边讲边练就可以把重要的东西慢下来。
用快捷键,省得满屏乱窜。
这是个技术活,我也不得要领。
Joseph将我的视频加入到了[kata接力][5]活动中,我们针对一个方法命名进行了一些讨论。
关于视频制作
第一次在Mac上录制屏幕,使用的是QuickTime Player,会有一点点卡,影响不大。 另外,视频后期编辑使用了iMovie。 视频一开始上传到youku上,发现不是很清楚,然后传到tudou就清楚多了。
关于BJDP
BJDP全称是(Beijing Design Patterns Study Group),即北京设计模式学习组,专注北京线下结对编程操练。让你通过面对面的分享讨论和肩并肩的结对编程(Coding Dojos编程道场)来领悟编程匠艺(Software Craftsmanship)之道。
网站:www.bjdp.org
相关推荐
### TDD-CDMA在无线通信中的应用 #### 一、引言 TDD-CDMA(时分双工-码分多址)是无线通信技术中的一个重要分支,它结合了时分双工(TDD)与码分多址(CDMA)两种技术的特点,为移动通信系统提供了高效的数据传输解决...
TDD-CDMA 技术及在 4G 中的应用 TDD-CDMA 技术是第四代无线通信系统(4G)中的一种关键技术。TDD-CDMA 是一种 Time Division Duplexing Code Division Multiple Access(时分双工码分多址)技术,具有高频谱效率、...
在这个名为"TDD-learn-demo1"的项目中,我们看到的是一个学习TDD的具体实例,特别是针对`ProtoStuffUtil`类的测试。 `ProtoStuffUtil`类可能是一个处理序列化和反序列化任务的工具类,它可能与Google的Protocol ...
我的博客 学习TDD(4)--实例2:基于ZooKeeper的服务器注册和探测类[实战ServerRegister]及 学习TDD(5)--实例2:基于ZooKeeper的服务器注册和探测类[实战ServerDetector] 的配套代码
TDD-LTE(时分双工LTE)是LTE的一个变种,它利用时间分复用的方式实现上行链路和下行链路的数据传输。本培训教程将深入探讨TDD-LTE的关键概念和技术细节,帮助读者全面理解这一领域的核心知识。** 1. **LTE概述** ...
根据文件信息,该文件是关于使用Swift 4进行iOS开发的测试驱动开发(TDD)的书籍,书名为《Test-Driven iOS Development with Swift 4 (Third Edition)》。该书的作者是Dominik Hauser博士,他完成物理学博士学业后...
TDD-LTE基本原理,LTE关键技术,LTE系统结构,LTE入门学习资料
`laravel-tdd-docs` 是一个专门为 Laravel 开发者准备的资源,旨在帮助他们更好地理解和应用 TDD。 1. **TDD 的核心原则** TDD 的基础包括三个步骤:红(Red)、绿(Green)、重构(Refactor)。首先,编写一个...
标题 "ses-tdd-exercise-1-template-源码.rar" 提示我们这是一个关于软件开发的练习项目,可能涉及测试驱动开发(TDD)的概念。在这个练习中,"template" 指的可能是一个模板项目,用于指导开发者进行TDD实践。源码...
【标题】"estudo-test-TDD--algaworks" 是一个与测试驱动开发(Test-Driven Development, TDD)相关的学习项目,很可能基于Java编程语言。TDD是一种软件开发方法论,强调在编写实际功能代码之前,先编写测试用例,...
TDD Cli转换器 TDD研究-从/到任何货币的CLI转换器 入门 这些说明将为您提供在本地计算机上运行并运行的项目的副本,以进行开发和测试。 有关如何在实时系统上部署项目的注释,请参阅部署。 先决条件 您需要什么东西...
### 测试驱动开发(TDD)在Django与...以上内容涵盖了本书《tdd-for-web-development-with-django-and-selenium》的部分关键知识点,这些知识点不仅对学习Django和Selenium有帮助,同时也适用于更广泛的Web开发领域。
在IT行业中,Test-Driven Development(TDD)是一种软件开发实践,它强调通过编写测试用例来驱动功能代码的编写。在这个场景下,"KATA-TDD --- TENNIS"是一个针对TDD技术的编程练习,旨在帮助开发者熟悉并掌握TDD的...
kata-tdd-1-BINH-NGUYEN-VAN kata 首先,我们必须安装grunt插件以帮助运行此演示: 1.打开命令行 2.转到目录:“ kata-tdd-1-BINH-NGUYEN-VAN” 3.键入命令:npm install 4.运行命令:grunt serve 问题 Q1:在...
TDD-LTE技术基本原理的介绍。PPT格式 更简洁明了