记一次令人哭笑不得的bug
6月6日 听风行投稿 Bug背景:
我项目组需要从B项目组同步一些订单数据,B项目组提供一个dubbo接口给我调用。B项目依赖jar之前已经引入,并且对应的DTO也使用过。
由于要区分测试数据和真实数据,订单有个测试标。我们项目组字段叫istest,取值规则0代表真实数据,1代表测试数据。
看了项目中引入B的DTO中测试标也叫istest,我特意看了其他用判断测试数据代码是istest1。因此我十分肯定,加确定B项目的istest也是
0代表线上数据,1代表测试数据。
但是由于我的需求是查询真实数据,所以我写的查询条件是istest0;需求太简单了,领导也允许我自测上线,我也信心十足,第二天产品慌张地找我线上数据乱了,真实数据被当成测试数据了,让我赶紧修复。我也慌了,怎么会有问题,一查数据库,怎么有istest2的数据,然后我下载了它们代码,看到注释赫然写到1测试数据,2真实数据privateintisT
当时瞬间我血压升高,幸好他不坐在我身边,不然要挨一耳光。我细细数了下,就这一行代码。他犯了多少错误。此时,我突然想起高中一个小插曲:
话说某日课间休息期间(午饭后下午上课前),几位同学在打牌,不幸被一领导看到了,记下名字,然后找我们班主任了。几位打牌的其中还有一位成绩不错的,班会上班主任说,你们至少犯了四大错误你不该打牌不该是你打牌你不该在这打牌你不该在这打牌被抓到
虽然我班主任是数学老师,说话很有水平,回到我细数这个同事代码过错,也至少犯了四大错误isTest类型你不该定义为int类型,要定义成boolean类型定义成int类型就算了,取值非得弄好1,2不该提供一个这样的接口不该提供这样的一个接口给我
这就是一个简单的命名规范,甚至约定俗称,常识性的东西,偏偏有人不遵守,当然本人也有犯错的地方太相信别人的水平太自信自己的判断
还是那句话,对任何代码都要有敬畏之心,尤其涉及线上订单等敏感数据。
推荐看下
阿里开发规范
stackoverflow程序员必备
github
投诉 评论