fizzbuzz
技术是由一万个细节组成的,哪怕一个这么简单的题目,也有如此故事多的点 。我也不敢说自己是什么高手,起码写了许多年代码,也就把自己写代码的思维展示给大家,希望对有心人有所帮助 。非初学者向,虽然题是个简单的题,但要求读者有一定的敏捷工程实践及DDD相关经验 。
FizzBuzz是一个经典的TDD入门题目游戏,麻雀虽小,五脏……勉强算全吧 。Stack Overflow创始人曾经在他的一本书里写到,“不要假设程序员都会写程序,招一个程序员来先写个FizzBuzz看看,结果可能会令你吃惊 。”
我当时不信,于是在一个招聘活动上拿这个的一个完整版做了题目,结果也确实挺让我吃惊的,吃惊在哪我先卖个关子,后面详细说 。后来教人写程序也用了树这个题几百遍了,见识过各种各样奇怪的错误 。
我们今天就用这个题目为例,来尽量阐述一些道理,fizzbuzz python 。这个题的需求有很多步,就好像软件开发中很多需求是一个版本一个版本迭代出来的,所以我们这个题目也一个迭代一个迭代来 。
迭代一迭代一的需求如下:
你是一名翻译体育老师,在某次课距离下课还有五分钟时,你决定搞一个游戏 。此时有200名学生在上课 。游戏的是什么规则是:
让中文所有学生拍成一队,然后按顺序报数 。学生报数时,如果所报数字是3的倍数,那么不能说该数字,而游戏要说Fizz;如果所报数字是5的倍数,那么要说Buzz 。不同于凭本能思考,这里我们讲一个套路:我们做软件开发的时候可以刻意分三个问题域来考虑问题,我称之为业务域、方案域、实现域 。这三个域有什么用呢?
当我们在进行软件开发的时候,有时会陷入无思路的状态,一旦陷入这种状态人容易焦虑,卡很久却没什么进展 。这个时候我们往往是处于一种所谓的unknow unknown的状态 。也就是不知道自己不知道什么 。新人最容易陷入到这种状态,只好盯着屏幕看半天 。这个时候就需要先意识到自己处于这个状态,然后就可以借用这三个域作为跳板跳出这个状态 。
首先来看看你的问题到底在哪个域,在不同的域要采用不同的方法来探寻问题到底是什么,在这基础上就逐渐有了思路 。这就是这三个域的用处 。
具体怎么用呢翻译?我们一个个来说 。
业务域首先说业务域,这里的业务用以代指需求音标 。
以这个题为例,我们在读需求的时候会发现一个问题,被3整除返回Fizz,被5整除返回Buzz,被3和5整除返回什么?
这个问题很明显,就属于业务域的问题 。
那么业务域的问题,我们通常读音怎么处理呢?
有的同学就直接脑补了:
脑补一:能被3和5整除,那就故事是先被3整除呗,那就Fizz 。脑补二:能被3和5整除,那就返回FizzBuzz呗 。那么以上哪个脑补是对的fizzbuzz呢?
答案是以上都不对,脑补本身就不对,脑补只是猜测,猜测不经验证树就是伪需求 。当我们遇到业务域的问题,不要自己脑补,请去与需求方确认需求 。
(题外话:当然,你带着两个脑补去找需求方是可以的,甚至于是很好的,因为这样需求方就能更容易的听懂你的问题,比你问被3和5整除返回什么要更具体 。这个题目里被3和5整除是很清楚的,但在工作中,提一个抽象的问题,然后跟上两个可能的具体的解决方案也能帮助对方理解 。)
确认需求时最重要的读就是对概念的理解建立共识,识别概念的边界 。前者还好,后者容易疏忽,同一个名词即便在需求当中,由于上下文的不同也有可能指的是两个概念,这部分内容本篇不作详细讨论 。
相关经验推荐
- 家谱英语
- 第三天英文怎么写 第四天英文怎么写
- oliver怎么读 oliver怎么读英语人名
- 苹果的英语怎么读 蚂蚁的英语怎么读
- 即使是这样英语怎么说 即使这是色情
- 新年贺词中英文对照50字 英语新年贺词50字
- 你喜欢吃水果吗的英语怎么说 问别人喜欢吃什么水果的英浯怎么说
- 制造商一定要在外包装上写吗 制造商一定要在外包装上写吗英语
- 云南2023年普通高等学校招生第二次英语科目听力考试和口语测试公告
- 云南高考第二次英语听力考试需要戴口罩吗