最近在T5450大冒险客户朋友圈常常能收到很多让人大吃一惊的难题,比如:
某老师 A 的业务流程无两处收起,但运转出来,却不能获得想要的结论。只好朋友圈的大家便纷纷帮他查阅标识符有没有严重错误,始终找不到难题,有人将他的标识符一段段展开校对,最后终于辨认出是他把两处冗余的顺序写反了,两个单纯的顺序拔除出来,业务流程也许不会收起,但最终得到的结论却会裂稃不同。
正简而言之「授人以鱼,不如少击众」,对于大多数初学者的学习,句法的充填虽说重要,但懂得读标识符,专业委员会增容标识符,也是初学者入门所必不可少的一项专业技能。
可这不可否认却是很多讲义专业课程里不曾提到的,所以今天就来谈谈对后辈来说单纯简练,但必须要掌握的增容基本功。
一、小哥鸭增容法:
简而言之小哥鸭增容法,只不过指的就是写作标识符预测严重错误的两个操作过程。你可以对着笔记本电脑旁的两个小哥鸭玩具,慢慢地跟它谈谈标识符的运转操作过程,只好自然就能在手忙脚乱处辨认出不好意思的地方性。
比如:初学者向天神发问,后辈按标识符运转业务流程讲自己的难题,一点一点讲下来,天神只言未语,后辈突然便惊觉,领悟到了严重错误之处——这也是“小哥鸭”增容法。小哥鸭增容法的关键,不是“小哥鸭”,而是分情形展开写作标识符,很多后辈在碰到难题时,一看到难题就头大,就去寻求协助,这其实是不对的,自主写作标识符,找寻严重错误,能带来更大的协助。
1、在业务流程收起的情形下:
当业务流程出现了收起,首先要做的是预测严重错误,看看收起的原因,是少引入了包,还是这儿没表述,亦或是这儿手滑敲错了标识符,功能定位到报错边线,找寻到收起边线相关的标识符,这类严重错误通常较快都能展开解决。
2、业务流程未收起情形,不能获得正确结论:
此种情形的严重错误就比较头疼了,通常都是逻辑严重错误,但没有具体的收起提示,面对一大串标识符,不知道错在这儿,也是蛮痛苦的。
遇到此种情形,我们最好是能从结论侧发力开始预测。
通过那个结论,思索,该些结论是从哪个地方性算出来的?跟那个结论有关的标识符是什么?迅速功能定位标识符的未明,缩小查错的范围,自己在脑内将标识符运转一遍,理解严重错误的产生,以找寻到严重错误点。
3、最万能的办法:
该办法适用于所有情形,直接从标识符最开始,代入两个可能的值,然后从开头(或是你认为有必要开始的地方性),直接在脑内,将标识符运转操作过程过一遍,正如对着小哥鸭讲出标识符运转操作过程一样,如果你觉得操作过程较为复杂,那你还可以使用一张业务流程图,将运转的操作过程记录下来,把各操作过程的数值记录在相应业务流程旁,标识符的完整运转操作过程清晰可见。
就如同高考时的数学业务流程题一样二、Print()输出增容法:
当然除了单纯粗暴的小哥鸭增容法外,print() 输出增容法也是一种很常用的增容方法,它的使用更为灵活。
在T5450大冒险内,hero.say()——让英雄说话,其作用与 print() 输出相同,在下面,我们来看看T5450大冒险的特约作者Pony所写的:如何使用 hero.say() 来对标识符展开增容。
来看这样的两个小案例,
在关卡:
https://codecombat.163.com/play/level/kithgard-brawl
中有两个老师,在运转以下标识符时遇到了死循环的难题,不知道怎么解。
接下来我们尝试用「say」来举例该难题的增容方法。
(在这里我们不谈他的标识符的好坏,仅针对他的思路增容出难题)
用法一:看业务流程是否运转到某处
上面有 3 个 while,那到底是在哪生了死循环呢?我们先在最下面的 while 里加一句,hero.say (已经运转到这里了!)。结论辨认出,英雄一直并未说出这句话。说明,下面的内容,业务流程根本没有运转到。
接下来我们在第二个while里写了一句 hero.say (已经运转到这里了!)。这里我们辨认出,英雄一直在反复说这句话。说明这里出现了难题!!!
用法二:看业务流程中某些你关心的变量内容
既然我们知道了,是第 2 个 while 产生的死循环。那么,很明显,我们应该关心 indx 的值的变化。
我们只需要 hero.say(indx),就很明显的辨认出indx被卡在了固定的两个数字,并没有按我们的想的往下 +1。
说明逻辑出现了难题,这时我们再看,辨认出 indx+ = 1 写在了enemyhealth < enemies[indx].health 条件下,反过来当条件不成单时就不会再加1。这就是一直无法跳出的原因!!知道了原因,再来改就很单纯了。如下:
以上就是用 say 来增容两个小 BUG 的的案例,而在真实的程式设计环境中,我们也可使用 print() 语句,按照上文中的思想,一一插入相应的边线,观察真实的标识符运转情形。
在本文里,为大家介绍了两种初学者必须要懂得标识符增容方法,而在未来,等到初学者们掌握了一定的程式设计基础,懂得了校对器的使用,你们还能学到如断点增容法等更有效的增容方法,也希望今天教给大家的方法,能成为各位初学者入门的一大助力。
文中用到的案例均来自T5450大冒险(http://codecombat.163.com),学程式设计用玩的。