善用debug

在程序运行中,有时会出现意外的情况,但是并不会打断程序执行,如move语句执行失败,程序会继续运行。当出现错误时,问题的根源已难以追溯。debug语句就可以在问题发生时,及时中断程序。下面列举一些debug的适用范围。

  • move:move失败错误比较隐蔽,经常会在很长时间之后发生错误。建议使用以下方法:

if not move()

debug

end

  • find:如果在一个表中使用find查找一个值,而这个值应该出现在表中。那么如果出现错误,并没有这个值,那么find语句并不会报错,而是返回初始游标位置,找到错误的值。建议使用以下方法:

if TableFile.find({*,*}..{*,*},aValue)
else

debug

end

  • if:可以在if语句未涵盖到的部分添加debug,以检验当前程序逻辑。例如:

if condition1

elseif condition2

else

debug

end

利用高效语句

正常的仿真运行对程序效率要求不高,但是当仿真时间较长,需要进行大规模实验的时候,运行效率的问题变得尤为重要。这里列举一些高效的语句供参考。

  • 使用switch…case…end (inspect…when…end) 代替 if…elseif…end (条件较多时)
  • 使用copyRangeTo / writeRow 等代替循环语句写表,减少表格读取次数。
  • 尽量使用局部变量代替全局变量,包括表格。

循环语句的终止条件

for循环不涉及该问题,但是while循环和repeat循环极有可能因为终止条件不完善陷入死循环。所以在使用这两种循环时,要注意设置循环次数的限制,添加计数器。例如:

repeat

«loop_statements»
i+=1

until «exit_condition» or i>1000

 

发表回复

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