一个空格引发的惨案

有一天我收到了一个需求,换行的时候让小票后面的x1跟着换。

简单
我本来用的随便搜的个别人封装的,三列文本居右的table(菜品名称一列占20字节,x一列占2字节,数量一列占2字节)
看到这个需求时,我愉快的在代码里判断,如果菜品名称那一列超过一行,我就直接分别在数量和x这两列添加两个空格,强制让这两列也跟着换行好了
结果我发现,源代码里有一句

            cols[i] = cols[i].trim();//切头尾空白字符

影响我的设计啊,于是我看了一下逻辑,觉得没什么作用,愉快得干掉了
然后测试发包上线,一通操作猛如虎
后来
过了很久之后
几十家门店在某一天突然齐齐报bug的诡异场景你见过没
问题是,这通操作已经过去太久,久到我根本记不起来这个小改动
更重要的是,这些门店都说打印机突然不能用了,然而还有更多家能用啊,我自个拉数据测试也能用啊
百思不得其解,浪费了一堆脑细胞后
找到了问题,就是这个傻叉的愉快的小改动
总结是,别人写的代码一定要确保自己看懂了再做删改,不要老是想这什么傻逼代码,拍拍脑袋就删了,结局会很惨的
言归正传,查下来的问题是,代码里有一段,剪切文本的。当菜品数量两位数时,截取到的文本,每次都是到空格就return,导致其陷入了死循环。

解决方案,既然不让我用空格,我就直接用“\u000”了,作为全角空格,一个字符也是两个字节
在这里插入图片描述

发布了72 篇原创文章 · 获赞 28 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/changhuzichangchang/article/details/86694108