一旦你重构掉之后,有一天你想看看原始实现是什么样子 。或者干脆你就想切换回原始实现 。这个时候这一步切换可以最大限度的保留当时的代码全景,让你很容易的看清当时的实现,也让你的回滚变得容易,毕竟谁也不敢保证自己能一次性做对,改着改着发现低估了这个复杂性,还不如以前的设计方便,也是常有的事儿 。
迭代3你是一名体育老师,在某次距离下课还有五分钟时,你决定搞一个游戏 。此时有200名学生在上课 。游戏的规则是:
让所有学生拍成一队,然后按顺序报数 。学生报数时,如果所报数字是3的倍数,那么不能说该数字,而要说Fizz;如果所报数字是5的倍数,那么要说Buzz;如果所报数字是第7的倍数,那么要说Whizz 。学生报数时,如果所报数字同时是两个特殊数的倍数情况下,也要特殊处理,比如3和5的倍数,那么不能说该数字,而是牛津要说FizzBuzz,以此类推 。如果同时是三个特殊数的倍数,那么要说FizzBuzzWhizz 。学生报数时,如果所报数字包含了3,那么也不能说该数字,而是要说相应的单词,比如要报13的同学应该说Fizz 。如果数字中包含了3,那么忽略规则2和规则3,比如要报35的同学只报Fizz,不报BuzzWhizz 。到这个版本,就是我们拿去做面试题的版本了,揭晓前面吃惊的地方,明明没有说包含5和包含7,结果有近1/3的人自己就写了包含5直接返回Buzz,包含7直接返回Whizz,fizzbuzz游戏 。还有一部分人走向脑补的反面,我们权且叫它脑删,比如这个题就是明明写了包含3,他没做,这种情况也都在那1/3里 。
同学们,我需要再强调一遍,脑补是不对的 。我去很多学校进行过人才的筛选,我发现一个基本的标准就可以筛掉大多数的人,那就是这个人会不会脑补或者脑删 。这个比例有多高,恐怕高出你的想象 。有一个研究贫困家庭到底会在学习上遇到什么问题的书里讲,贫困家庭的孩子,最大的能力缺失是阅读能力不行,由于在小时候缺乏了阅读能力的锻炼,绝大多数穷人家的孩子阅读能力都不好,他们不习惯看长文,阅读也经常会理解错误,于是导致了他们的收入的天花板 。
从这几个独立的案例里可以看到一个道理,那就是机器的输入输出很重要,人的输入输出同样重要,有的时候很多人并不是比别人笨,只是因为输入出了问题,智商的部分根本没有机会参与竞争 。对于这些没过的同学,他们的问题就出在了题没有读清楚 。也就是我们前面讲的业务域没搞清楚,所以最后结果不好 。
我们当然也可以说,是你需求没有讲清楚,里面的重点没有标记fizzbuzz清楚,没有用一种更容易理解的方式来呈现 。但现实中真的存在完全清楚的需求描述吗?由于人类的语言存在强烈的上下文相关性,同一个词语换了上下文都会有不同的含义,换句话说,两个上下文不同的人听到同一个词的理解也是不一样的 。我们的工作就处在这样的一种场景下,澄清需求本就是程序员的工作之一,因此沟通表达能力也是程序员需要去关注的能力之一 。不然就会发生业务域的问题没搞清楚然后试图通过方案域和实现域办法来解决不属于这两个问题域的问题,这是很多难题得不到解决的关键所在,也是很多乱相的根因,具体比例咱不好说,读者可以自行对号入座 。
测试景深到了这个版本的需求里,我们需要处理包含3,这里面有个测试就不太好了,那是什么呢?输入3得到Fizz这个,如下图所示:

文章插图
这个测试我们测试了什么呢?是测试的被357整除还是测试的包含3?很明显,我们测试的是包含3 。
相关经验推荐
- 家谱英语
- 第三天英文怎么写 第四天英文怎么写
- oliver怎么读 oliver怎么读英语人名
- 苹果的英语怎么读 蚂蚁的英语怎么读
- 即使是这样英语怎么说 即使这是色情
- 新年贺词中英文对照50字 英语新年贺词50字
- 你喜欢吃水果吗的英语怎么说 问别人喜欢吃什么水果的英浯怎么说
- 制造商一定要在外包装上写吗 制造商一定要在外包装上写吗英语
- 云南2023年普通高等学校招生第二次英语科目听力考试和口语测试公告
- 云南高考第二次英语听力考试需要戴口罩吗
