Processing:除错 调试

1. 小窍门#1:休息一下
我没有开玩笑。离开你的电脑。睡一觉。出去慢跑一圈。吃个橘子。玩一下拼字游戏。总之,做一些除了日代码之外的事。我无法告诉你究竟有多少次我盯着代码数小时而无法搞定那些bug,然后第二天一早醒来五分钟就解决了战斗。

2. 小窍门#2:让他人介入
把你的问题讲给你的朋友,将你展示代码的流程讲给一个程序员(甚至是非程序员)并且顺着过一遍它的逻辑,这往往能揭示问题所在。在很多情况下,因为你是如此熟悉你的代码,因此便看不到很多很明显的东西。通过你将其阐述给第二人的过程,会促使你更慢的将你的代码重新过一遍。如果你身边暂时没有朋友,你同样可以将这个流程大声的告诉你自己。是的,看起来像傻逼,但却很有帮助的。

3. 小窍门#3:简化
在上一章(算法),我们学会了分部分块的完成程序的方法,分得越细,最后出错的机率便越小。这么做的方法之一,是将程序中的某些部分“评论(comment)”掉。

4. 小窍门#4: println( )是你的朋友
运用信息窗口显示变量的值可以说事非常有用。如果一个对象完全从萤幕消失了并且你想知道为什么,你可以打印出它位置变量的值。它看起来可能像这样:
println( “x:” + thing.x + “y:” + thing.y);
如果结果是:
x: 9000000 y: – 900000
x: 9000116 y: – 901843
x: 9000184 y: – 902235
x: 9000299 y: – 903720
x: 9000682 y: – 904903

那么很显然,这些值并非合理的像素坐标,因此该对象在计算其位置的时候也许出错了。或者alpha值为0的时候,你当然也看不到该对象。

另外,printIn()还可以用来侦测你的部分代码是否已被传到。比如,之前那个滚动小球的例子,如果球到了右手边但却不滚回来,这是什么情况呢?问题可能是a. 你没有正确定义它怎样才算碰边,或者b. 在它碰边后你没有做对。要知道是哪种情况,你可以写:
if (x > width) {
println( ” X is greater than width. This code is happening now! ” );
xspeed *= –1;
}

如果你运行程序却没有看到这则消息,则你的布尔表达式可能存在瑕疵。

Be Sociable, Share!

发表评论

电子邮件地址不会被公开。 必填项已用*标注