首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

行为驱动下的编程

1弗朗西斯科·西里洛

弗朗西斯科·西里洛在1992年创立了番茄工作法,但若是从头说起,则要追溯到20世纪80年代末,他大学生活得头几年,他一直苦于效率低下,学习学不进去。

就在他山穷水尽之时,他和自己打了个赌:“我能学习一会儿吗?——真正学上10分钟?我得找个即时教练,谁来替我掐表呢?后来我找到了,是一个厨房计时器,形状好像‘番茄’。就这样我邂逅了我的番茄钟。”

好吧,我至少找到了我们的共同点,我他妈编程也编不下去。

什么是番茄工作法?简单说,就是列出你当天要做的事情,设置25分钟闹钟,然后从第一件事开始。在这25分钟里,你不可以想其他任何事,就算老板说要炒了你,你也要泰然自若的专注于眼前的工作——25分钟之后你再把数据库删了跑路也不迟。

这其实是一个分层设计,是算法设计里的分治思想,是把「规划」与「做事」分开的思想,如果我们在「做事」中进行「规划」,我们往往就会畏手畏脚,做不出最好的东西来。而真正的那些艺术家们创造杰出的艺术作品的时候,一定是十分专注于他手头的工作的,而不顾截止日期的。

“沃尔夫冈·阿玛多伊斯·莫扎特,你的交响曲已经拖稿五周了!我警告你今天晚上六点之前一定要交稿!不然整个团队都要受牵连!”

莫扎特:“FUCK!!”

2 如何开始做一件事

如果说我们有很多人关注着「如何做好一件事」的话,那么我想说「如何开始做一件事」得到的关注恐怕是太少了。就像诺特伯格在《番茄工作法》里说的,我们很多人都是:

面对复杂,望而却步。

有时我们不是不能做这件事,我们是无法开始做这件事,而对于我来说,一个程序员,我面对的最大的问题是「如何开始编程」。而这个问题在番茄工作法里其实已经描述的很好了,即引入「行为驱动」。

“番茄工作法是以动作为导向的,扭动开启番茄钟是动作,遵守铃声是动作,填写“今日待办”表格是动作。习惯成自然,充分利用条件反射的力量。”

于是我就想模仿番茄工作法,给我自己的编程也设计一套动作导向的流程,让反射的力量帮助我去解决「如何开始编程」的问题。

于是我审视了我整个编程的过程,总结了以下的通用行为流程。

3 行为驱动下的编程

从行为驱动上将,编程分为四个阶段:

1. 学习

2. 设计

3. 编程

4. 测试

我认为这四步缺一不可,并且会大量重复3,4两个步骤,下面我来一个一个说明

1. 学习

拿到一个需求后,我们首先要做的是根据需求,确定我们需要学习什么。

比如需求是:“用kotlin实现一个游戏引擎”

我们就可以确定学习目标:

(1)学习Kotlin语言

(2)学习游戏引擎原理

2. 设计

经过了艰苦卓绝的学习过程后,我们已经掌握了Kotlin语言与游戏引擎的原理了,这时候时候进行一些设计了,这也是整个编程最具原创性的过程。

首先,我们将游戏引擎的需求分为:

(1)游戏主循环

(2)输入系统

(3)动画系统

我们要分别去实现这三个部分,然后再将它们结合起来。比如,我们首先要实现游戏主循环,接着我们需要设计一个输入系统,该系统会对用户输入有所反应,并给出对应输出,我们需要把输出结果给到主循环,并通过主循环输出给动画系统,让人们看到画面。

3. 编程

这里的编程不是整体的编程,而是根据设计,把一大块程序分成一个个行为相对简单的小程序进行逐个击破。这也是算法中分治思想的关键————把大问题转化成小问题。

4. 测试

我们现在已经有了「游戏主循环」、「输入系统」、「动画系统」,我们是不是就要直接将他们结合到一起呢?不,我们需要先对「没把握的行为」进行测试,测试的方法我选择PrintF大法!将输入和输出都打印出来,看看结果是不是正确!

在这里我认为没把握的是动画系统和输入系统,所以对其进行测试。

输入系统测试

输入:键盘按←

输出:001

输入:键盘按→

输出:002

结果正确,输入系统是OJBK的。

动画系统测试

输入:一个坐标,一个图片

输出:在屏幕固定位置上显示一张图片

结果正确,动画系统是OJBK的。

好了,现在我们的两大值得测试的组件都可以用了,那么我们可以根据我们的设计,将「游戏主循环」、「输入系统」、「动画系统」三者结合,做出了我们的游戏引擎了。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180323G13L5900?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券