# 第二题：MarsRover 火星车

## 副本简介

火星漫步者在某块区域中根据指令进行移动，然后采集相应位置的火星数据。通过学习和应用 Tasking 的方法论，帮助学员逐渐养成正确的 Tasking 任务分解思路，从而可以更快胜任处理复杂工作的能力。

![MarsRover UI](https://2897586075-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LquCgGNObzQ8HY5Og1P%2F-M26POn8RzGpt7JmXdbN%2F-M26PPX5bygmK8WIo6LZ%2Fmarsrover.jpg?generation=1583893556322832\&alt=media)

## 副本挑战

1. 掌握 Tasking 方法论
2. 完成 Tasking 任务分解练习
3. 至少练习 3 遍 MarsRover 题目
4. 能在 20 分钟内完成 MarsRover 题目

## 时长限制

**8 小时**

## 副本奖励

* 任务分解：Tasking 如何转化为 TestCase
* Tasking 技巧和方法、遍历任务输入/输出的边界
* 开始接触重构，坏味道 & IDE 操作手法及快捷键
* 使用“拆分阶段”手法重构，同时体现数据与 UI 分离
* 引出命令者模式，再引出 Redux 与 CQRS 架构

## BOSS 掉落

1. IDE 的重构快捷键操作
2. 用 Jest 编写单元测试
3. 编写失败的测试，驱动出产品代码
4. 充分利用代码生成 (live template)
5. 刻意练习的节奏
