博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
总结:开发容易出Bug的代码或操作
阅读量:5808 次
发布时间:2019-06-18

本文共 1856 字,大约阅读时间需要 6 分钟。

又有一段时间没有发表文章了,感觉在同一个公司待久了,能写出来的东西就少了,呵呵,大家是不是有一样的感觉。

 

今天来总结一下开发常见的易引发错误或影响效率的东西。

开发对于懂开发的人来说其实很简单,做开发这项工作简直就像日常吃饭一样熟练,但是,开发过程中,由于各种各样的问题,例如:业务逻辑不清晰、开发人员粗心、开发人员经验不够、生产环境不同等等,这些问题导致各种BUG,是需要特别重视的,下面整理了一些情况来说明问题。

svn文件漏提交影响他人开发,这个在实际开发中出现比较频繁.

A:漏提交文件(自己不知道,他本地代码编译没报错)

B:获取编译报错,在群里大叫“谁的代码,编译不过”

…………过了半天没有回答,去查下svn提交记录,查出是A提交后就出问题了

B: QQ群里,@A,你提交的有问题,自己去看下”

A: 看下自己果然有文件没提交,赶紧把漏提交的文件提交了,在群里回复“可以了,再获取下”

……然后,就ok了。

 

 

非空判断

B2bDistributorOrderMapping distributorOrderMap = allDistributorOrder.Where(o => o.OrderId == order.OrderId).FirstOrDefault();

var amount =  distributorOrderMap.CreditAmount.GetValueOrDefault(0M);//如果distributorOrderMap为空,则必定报错

循环内多次连续读取数据库-最大可能导致数据库服务器cpu

while (hasData)//每天订单数10000的情况下

{

var orderListQuery = OrdersRepository.Entities.Where(o => o.CheckInDate <= usedDate && (o.FinanceReceiptDate >= usedDate || o.CheckOutDate >= usedDate) && o.CancelStatus != (int)OrderCancelStatusEnum.OrderCanceled && o.OrderStatusId == audited);

if (loopCount == 0) order = orderListQuery.OrderBy(o => o.OrderId).FirstOrDefault();

else order = orderListQuery.OrderBy(o => o.OrderId).Skip(loopCount).FirstOrDefault();

if (order == null) hasData = false;

else hasData = true;

loopCount++;

}

逻辑不严谨-粗心导致

//正确代码

{

if(a==1) return 100;

else return 0;

}

//错误代码

{

var retVal;

if(a==1) retVal=100;

retVal = 0;

return retVal;

}

测试代码写死临时本地配置(如:192.168.9.220)被误提交,本地测试没问题,一发到线上就报错

 

索引超出范围报错

如:

var a=new int[2]{0,1};//两个元素,下标为01

Var b=a[2];//取下标为2的元素,报错

 

数据库基础数据或网站配置不同

比如:

测试环境数据库加了个字段线上忘记加,或本地config配置文件加、改配置,线上忘记改,造成各种报错,也是最常见的错误。

 

 

高级问题:

环境冲突,未考虑测试环境和正式环境

比如:

测试环境上传文件用cdn传文件:http://cdn.xxxx.com/2016-01-01.txt

正式环境文件也是:http://cdn.xxxx.com/2016-01-01.txt

有可能测试环境刚生成文件,造成文件覆盖,正式环境正好在获取,就获取了测试环境的同名文件内容,造成数据错误。

环境不同导致

比如,财务事务补偿正常的操作流程图:

出错情况的正常情况分析:

 

 

总结:

其实有BUG也是正常的,发现后及时修复就行了,但是如果大量的BUG是因为人粗心或思维不严谨、遗漏等原因造成的,那就太不应该了。

所以平日里,我们开发时必须要考虑仔细,提交前至少保证先编译通过,那样问题就会减少很多。

 

你可能感兴趣的文章
重拾黑客精神:后IT时代技术流的回归
查看>>
网络钓鱼大讲堂 Part3 | 网络钓鱼攻击向量介绍
查看>>
阿里云与Intel联合发布加密计算,亚洲首个云上“芯片级”数据保护
查看>>
js实现按钮复制功能
查看>>
1、下载安装scala编译器(可以理解为scala的jdk),地址:http://www.scala
查看>>
mui 总结2--新建第一个app项目
查看>>
nginx的lua api
查看>>
考研太苦逼没坚持下来!看苑老师视频有点上头
查看>>
【安全牛学习笔记】提权
查看>>
HCNA——RIP的路由汇总
查看>>
关于Java的线程状态
查看>>
javaweb开发之Filter实现过滤非法文字
查看>>
zabbix监控php状态(四)
查看>>
定时任务的创建
查看>>
【笔记】两个修复网络的命令
查看>>
实战Django:小型CMS Part2
查看>>
原创]windows server 2012 AD架构试验系列 – 16更改DC计算机名
查看>>
Symantec Endpoint Protection下载方法
查看>>
统治世界的十大算法
查看>>
mac安装gcc
查看>>