作者:舒克老师

  我们以Scratch为例,Scratch虽然是一个简单的图形化编程工具,将编程简化到了7岁以上的孩子就能够操作和使用。但是在实际的制作过程中,会遇到的问题与其他正式的编程语言没有太大的区别,我们一样会遇到各种各样BUG(程序中,隐藏着的一些未被发现的缺陷或问题统称为bug,那么我们在制作的过程当中有哪些方法来尽量避免设计上的bug,又有什么好的方法,在我们发现程序出现bug的时候能够快速、准确的找到他们,并且修复问题呢?

一、如何尽量避免BUG

  1、思路清晰:无论使用任何工具,我们在设计代码模块的时候,我们都应当尽量理清自己的思路,用尽量简洁的方式来实现想要的功能,或者使用模块化的方法来进行制作。同时注意记录设计思路,无论是记忆还是绘制设计图。

  2、模块简洁:一个程序序列当中,条件分支不宜过多,尽量通过分析将条件从新组合,以更加简便的方式来进行。同时循环嵌套也同样需要通过优化方案来尽量减少嵌套的数量。

  3、独立的功能:能够重复使用的功能呢,为了实现可重用性和扩展性,建议写成独立的过程(比如自定义模块),定义好相关的参数由外部程序调用。

  4、善用变量:将常用数据通过变量或列表进行存储,方便统一修改和使用,减少出错几率。

  5、分段制作:将一个复杂的功能拆分为多个小功能任务,分步骤进行制作,并且对每一次实现的功能进行测试。

  6、及时测试:我们应当尽量在每一次修改或者完成一小部分的制作后及时进行测试和修改。不要将可能存在的错误留到最后才发现,这样就容易留下各种奇怪的问题,同时难以定位错误的具体原因。

二、如何判断bug

  1、优先处理容易重现的BUG。

  2、准确的描述出问题的现象以及和我们预期效果的差别。

  3、找出我们的程序流程错误还是逻辑错误或者是数据的运算错误等等。

  如果能够简单的通过判断来找出错误类型,那么对于我们定位问题的位置就会有很大的帮助。

三、如何定位bug

  1、找出自己的设计,凭记忆,或者画下来。

  2、根据程序的设计来寻找错误可能存在的地点

  在这其中有很多的方法来帮助我们准确的找到错误位置,比如:

  1)、变量定位:在我们认为是程序的执行次数或者是否执行的问题上出现错误的时候,我们可以选择在怀疑没有运行或者运行出错的模块当中,插入一个变量来观察输出的结果,如果输出结果正确比如分支正确执行输出我们的变量内容,或者循环次数正确输出正确的循环数字,那么我们就可以确定这一代码序列属于正确的,否则我们就可以确定这一段序列当中出现了错误。

  2)、放大现象:有时候出现的错误并不明显,不能准确的了解到出错原因,那么这个时候我们就可以想办法通过重复操作,或者试着修改程序,来放大错误现象,帮助我们定位具体的出错原因和位置。

  3)、二分定位:将怀疑存在错误的指令序列进行拆分,进行分步运行,看看哪一个步骤在运行时出现的错误,逐步缩小拆分的范围,来确定错误位置。

scratch拆分后的指令可以通过直接左键点击序列来分步运行单独的部分。

  4)、现场模拟:换个角度来思考问题,如果我需要设计出现错误的效果,那么我会怎样来设计我的功能和指令序列,然后根据自己可能采用的方法,去寻找是否有部分指令序列有相似的效果。

四、如何处理bug

  1、逐个解决,多测试。每次修改指令或者数据后务必立马进行测试,查看错误是否被修正,或现象是否有好转,逐步解决错误。

  2、记录BUG,这样便于在后面的制作过程中解决类似问题,以及作为日志记录,便于我们以后的了解。

  3、掩盖错误,尽管这是一个十分不推荐的方法,但是当我们遇到短时间内用了各种办法实在无法解决的问题时,我们可以通过加入更多指令的方法,来修正错误的现象,但是不到万不得已,不建议使用,这可能会留下更大的隐患。

  4、寻求帮助,加入QQ群或其它交流群去寻求他人指导与帮助,不过有个前提你需要能够清晰的表达自己所遇到的问题,这样会事半功倍。

  总结:尽管我们使用的是看起来十分简单易懂的scratch来进行制作,但是作为计算机的创作来说依旧是十分严谨的,稍不注意我们就可能会在自己的作品中留下一些错误,我们不能放任不管,而是坚定目标持之以恒,尽量消灭每一个错误,来打造一个流畅的体验。

  最后感谢少儿编程网专业导师:珠海-大白兔、QQ群内各位老师以及知乎网友姚冬