♻️
前端 TDD(测试驱动开发)
  • README
  • 总-课程目标
  • 总-课程安排
  • Coding
    • 第一题:FizzBuzz 数字游戏
      • 什么是 FizzBuzz?
      • 任务 0:练功前的热身
      • FizzBuzz 项目剖析
      • 任务 1:TDD 初体验
      • 任务 2:先利其器
      • 任务 3:再撸一遍
      • FizzBuzz 项目总结
      • 附录 1:Jest 测试基础及要点
      • 附录 2:Testing Library 组件测试基础
    • 第二题:MarsRover 火星车
      • 任务 1:Tasking 任务分解
      • 火星车实战
      • 火星车 Tasking 任务分解
      • 任务 2:MarsRover 实战演练
      • MarsRover Coding 演示
      • 任务 3:MarsRover 练习
      • MarsRover 项目总结
    • 第三题:CommentBox 留言板
      • CommentBox 项目剖析
      • 任务 1:Cypress E2E 测试
      • 任务 2:测试驱动组件单元接口
      • 任务 3:组件级别的快速反馈
      • 任务 4:由外到内的前端 TDD
      • CommentBox 项目总结
    • 第四题:Bookshelf 魔法书架
      • Bookshelf 项目剖析
      • 任务 1:练习 API 契约测试
      • 任务 2:组件化与数据流管理
      • 任务 3:Redux 数据流测试
      • 任务 4:简化 Redux 项目结构
      • Bookshelf 项目总结
      • 附录 1:什么才是真正的 RESTful 架构?
      • 附录 2:【译】Redux 和 命令模式
      • 附录 3:【译】什么是 Flux 架构?(兼谈 DDD 和 CQRS)
    • 第五题:ShoppingCart 购物车
      • ShoppingCart 项目剖析
      • React 哲学:Thinking in React
      • 任务 1:任务分解 - 驱动组件树拆分
      • 任务 2:综合应用 - 驱动组件接口设计
      • 任务 3:综合应用 - 驱动数据流管理
      • 任务 4:综合应用 - 驱动组件样式开发
      • ShoppingCart 项目总结
由 GitBook 提供支持
在本页
  • 技能要求
  • 任务拆解
  1. Coding
  2. 第一题:FizzBuzz 数字游戏

FizzBuzz 项目剖析

上一页任务 0:练功前的热身下一页任务 1:TDD 初体验

最后更新于5年前

的确,FizzBuzz 是一个非常简单的题目。看完这道题,有工作经验的程序员恐怕会露出鄙夷的神情 ─━ _ ─━✧。“这种编程初级班的题目,还能玩出什么花?”

关键在速度上。你能用多快的速度完成这道题?

  • 据我们的观察,行业里平均水平大约需要 1 小时。很多优秀的程序员能在 15 分钟内完成。

  • Michael Feathers(他是《修改代码的艺术》一书的作者)和 Emily Bache 在 Agile2008 大会上用了 4 分钟完成。

  • 翻译《重构》第二版的林从羽老师,在写 FizzBuzz 的计算逻辑部分的时候,只用了 1 分 15 秒。

你可以赏析一下,他快在什么地方吧?

提问:从这个短短的视频,除了速度,你还看到了些什么?

达到这样的编程速度,需要对自己使用的工具非常熟悉、对自己要解决的问题想得非常清楚。

这就是我们要练的基本功。

技能要求

让我们重申一下这个项目的要求,这就是你练习的目标:

  1. 熟悉 IDE 的快捷键操作

  2. 使用 Jest 编写单元测试

  3. 使用 Testing Library 编写组件测试

  4. 编写失败的测试,驱动出产品代码

  5. 充分利用代码生成 (live template)

  6. 刻意练习的节奏!

任务拆解

本项目分为个任务:

  1. TDD 初体验

  2. 利其器,整理工作环境

  3. 刻意练习,再撸一遍