最近陪上小学的儿子写作业,他老师布置了一个用ref="/tag/132/" style="color:#8B0506;font-weight:bold;">编程做数学小游戏的任务。孩子选了Ruby语言,说班里有几个同学都在用。可一动手就卡壳了,不是少了个end,就是变量名拼错了。看着他皱眉的样子,我坐下来一起琢磨,慢慢也摸出些门道。Ruby调试其实没那么玄乎,几个简单方法就能帮孩子快速找到问题。
用puts打印看看
最土的办法往往最管用。孩子刚写循环时总搞不清变量怎么变的,我就教他在关键位置加一句puts,把变量值打出来瞧瞧。
for i in 1..5
puts "当前i是:#{i}"
# 其他逻辑
end
屏幕上一行行输出,孩子立刻明白“哦,原来是这样一步步走的”。
byebug临时停一下
有次程序跑着跑着突然报错,但看不出在哪。我装了个byebug,在可疑代码前加一行byebug,程序就会暂停,像按了暂停键一样。
require 'byebug'
numbers = [1, 2, 3]
byebug # 程序执行到这里会停下来
numbers.each { |n| puts n * 2 }
这时候可以问变量“你现在是多少”,输入n就能看到值,特别适合查逻辑错。
看错误信息别慌
孩子一开始看到红字就紧张,以为完蛋了。其实Ruby报错挺友好的,会告诉你哪一行出了问题。比如undefined method '+' for nil:NilClass,意思就是你对一个空值做了加法。这时候回头看看是不是前面漏赋值了。
分段测试小模块
写大段代码容易乱。我和孩子约定,每写完一小块就单独试一下。比如做个计算器,先测加法能不能算对,再测减法。就像搭积木,一层一层来,哪层歪了一眼就能发现。
善用编辑器高亮
现在用的代码编辑器基本都能标出配对的do/end或括号。颜色一不一样,马上就知道有没有漏。孩子刚开始老忘写end,开了语法高亮后错误少了一大半。
教孩子调试,不光是修bug,更是培养耐心和逻辑思维。每次解决问题,他眼睛都亮亮的,比打游戏通关还高兴。编程这事儿,不怕出错,怕的是不敢动手改。