写过的最愚蠢的代码是什么?

体娱   2024-10-09 20:03   山东  

承认自己的愚蠢是很难的,毕竟在这个社会别人都在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、总结

其实程序语言真的是一门很“精确”的东东,哪怕错一个标点符号,少一个字符,都会是不同的结果!

很多人编程久了,可能会很少犯错误。

但是在走钢丝绳的时候,即使再熟练,钢丝绳依然存在!

我是明月,

一个最近很“蠢”的人!

明月三千
将进酒,杯莫停。与君歌一曲,请君为我倾耳听。荔枝成为linux大师!
 最新文章