承认自己的愚蠢是很难的,毕竟在这个社会别人都在PUA你,如果你再PUA自己,那真是作死Plus!
没有最愚蠢,只有更愚蠢!
今天就分享二个最近干的有点蠢的事情!
1、默认参数
最近在对接一个“自动售货机”的SDK,其中有一个弹出物品的接口。接口的作用显而易见,就是给售货机一个信号,让它把物品通过弹簧给推出来!
自动售货机,有个通道的感念。
它把物品都放在一个弹簧上面,这就是一条通道!
在SDK的参数里面,有一个函数对应这个操作,
参数有2个,分别是
channel:通道号,默认是1
timeout:操作超时
对接还是挺简单的。
当我信心满满的开始测试的时候,发现一个问题:为什么总是在第一个通道弹出,其它没反应?
莫非这台机器是坏的?不可能吧,是新机器!
莫非我SDK错误?可是它是弹出的!
莫非我逻辑判断,通道物品数量不对?因为我要根据数量来选择通道,如果一个通道的数量为0,就选择其它通道!莫非逻辑出了问题吗?
在我经过了大量重复的调试、看本地变量,单步调试的一顿操作猛如虎,结果发现都没问题!
最终,我发现了问题所在,就在中午饭的铃声想起的时候!
没错,一个上午过去了!
问题的所在,就是那个“channel”参数。我在代码里面是“chanel”,少了一个n。
我也很疑惑,怎么程序能运行呢?
原因很简单,因为在我的调用中,“channel”参数相当于没有,但是他有一个默认值,为1!
这就是为什么总是1号通道弹出物品的原因!
我望着那个单词,有点恍惚!
2、“.”和“,”的区别
大家看清楚,是“点”和“逗号”的区别!
还是上面的“自动售货机”对接。
在自动售货机弹出物品之后,我需要记录一下这个操作,什么时间弹出了什么物品!
但是,我发现少一个关键参数,就在PHP代码里面加入了这个参数!
很神奇的是,这个代码总是不执行。
这当然不行,如果不记录,出了问题怎么知道是怎么回事?
我怀疑是SQL的拼接出现了问题,于是我就换了一个PHP的自动拼接SQL的函数!
结果发现,没有用!
是不是数据库的字段类型不对,从int改为decimal,行不行?
不行,数据库里面依然没有!
这是怎么回事?
莫非上天有一个蒙蒙之手,在阻止我?
擦,怎么可能,怀疑人生是不行的!
终于,我发现了问题所在。
在我加这个参数的时候,可能误触了键盘,把“,”按成了“.”。两者还非常相似,不仔细看还真是看不出来!
在PHP里面,“.”,就是点,其实是一个连接操作。
譬如下面的代码:
$a="hello"
$b="world"
$c=$a.$b
那么$a的值就是“helloworld”!
所以,我神奇的操作就把最后一个参数给链接到前面那个参数上面了,相当于调用的时候,缺少参数!
破案!
3、总结
其实程序语言真的是一门很“精确”的东东,哪怕错一个标点符号,少一个字符,都会是不同的结果!
很多人编程久了,可能会很少犯错误。
但是在走钢丝绳的时候,即使再熟练,钢丝绳依然存在!
我是明月,
一个最近很“蠢”的人!