一段代码的优化过程
自己写了一段判断,需求是:
如果 dataIn.Zznjh以"0"开头,则dataIn.Zzdqspid取其前6位;
如果 dataIn.Zznjh以非"0"开头,则dataIn.Zzdqspid取其前7位;
但是,SD嫌代码过长,所以做了一系列的优化;
以下是我最初的版本:
//如果内机条码不为空,则判断内机条码是否以0开头;
//以0开头,取前6位;非0开头取前七位
if (dataIn.Zznjh != string.Empty)
{
if (dataIn.Zznjh.Substring(0, 1) == "0" && dataIn.Zznjh.Length < 6)
{
dataJy.Zb2bJyDis = "内机条码格式错误!";
dataJy.Zb2bJyCode = "M0015";
JyEntity(dataJy.Zb2bJyDis, dataJy.Zb2bJyCode);
}
if (dataIn.Zznjh.Substring(0, 1) != "0" && dataIn.Zznjh.Length < 7)
{
dataJy.Zb2bJyDis = "内机条码格式错误!";
dataJy.Zb2bJyCode = "M0015";
JyEntity(dataJy.Zb2bJyDis, dataJy.Zb2bJyCode);
}
}
else
{
dataJy.Zb2bJyDis = "内机号不能为空!";
dataJy.Zb2bJyCode = "M0020";
JyEntity(dataJy.Zb2bJyDis, dataJy.Zb2bJyCode);
}
//当商品id为6位的时候,内机条码必须要大于6位
if (dataIn.Zzdqspid.Length == 6)
{
if (dataIn.Zznjh.Length >= 6)
{
if (dataIn.Zzdqspid != dataIn.Zznjh.Substring(0, 6))
{
dataJy.Zb2bJyDis = "内机条码和商品ID不匹配!";
dataJy.Zb2bJyCode = "M0014";
JyEntity(dataJy.Zb2bJyDis, dataJy.Zb2bJyCode);
}
}
else
{
dataJy.Zb2bJyDis = "内机条码格式错误!";
dataJy.Zb2bJyCode = "M0015";
JyEntity(dataJy.Zb2bJyDis, dataJy.Zb2bJyCode);
}
}
//当商品id为7位的时候,内机条码必须大于七位
else if (dataIn.Zzdqspid.Length == 7)
{
if (dataIn.Zznjh.Length >= 7)
{
if (dataIn.Zzdqspid != dataIn.Zznjh.Substring(0, 7))
{
dataJy.Zb2bJyDis = "内机条码和商品ID不匹配!";
dataJy.Zb2bJyCode = "M0014";
JyEntity(dataJy.Zb2bJyDis, dataJy.Zb2bJyCode);
}
}
else
{
dataJy.Zb2bJyDis = "内机条码格式错误!";
dataJy.Zb2bJyCode = "M0015";
JyEntity(dataJy.Zb2bJyDis, dataJy.Zb2bJyCode);
}
}
else
{
dataJy.Zb2bJyDis = "商品ID不合格!";
dataJy.Zb2bJyCode = "M0032";
JyEntity(dataJy.Zb2bJyDis, dataJy.Zb2bJyCode);
}
优化一:
以下是同事的优化,但个人觉得虽然代码量减少了,但可读性略微逊色些的!(纯属个人见解)
if (dataIn.Zznjh != string.Empty){
if (dataIn.Zzdqspid.Length != 6 || dataIn.Zzdqspid.Length != 7)
{
dataJy.Zb2bJyDis = "商品ID不合格!";
dataJy.Zb2bJyCode = "M0032";
JyEntity(dataJy.Zb2bJyDis, dataJy.Zb2bJyCode);
}
else
{
if ((dataIn.Zznjh.Substring(0, 1) == "0" && dataIn.Zznjh.Length < 6) || (dataIn.Zznjh.Substring(0, 1) != "0" && dataIn.Zznjh.Length < 7))
{
dataJy.Zb2bJyDis = "内机条码格式错误!";
dataJy.Zb2bJyCode = "M0015";
JyEntity(dataJy.Zb2bJyDis, dataJy.Zb2bJyCode);
}
else if (dataIn.Zznjh.Substring(0, 1) == "0")
{
if (dataIn.Zzdqspid != dataIn.Zznjh.Substring(0, 6))
{
dataJy.Zb2bJyDis = "内机条码的前6位 为必须是商品ID!";
dataJy.Zb2bJyCode = "M0014";
JyEntity(dataJy.Zb2bJyDis, dataJy.Zb2bJyCode);
}
}
else
{
if (dataIn.Zzdqspid != dataIn.Zznjh.Substring(0, 7))
{
dataJy.Zb2bJyDis = "内机条码的前7位为必须是商品ID!";
dataJy.Zb2bJyCode = "M0014";
JyEntity(dataJy.Zb2bJyDis, dataJy.Zb2bJyCode);
}
}
}
}
else
{
dataJy.Zb2bJyDis = "内机号不能为空!";
dataJy.Zb2bJyCode = "M0020";
JyEntity(dataJy.Zb2bJyDis, dataJy.Zb2bJyCode);
}
优化二:
最终优化为:
if (dataIn.Zznjh != "" && dataIn.Zznjh.Substring(0, 1) == "0")
{
if (dataIn.Zzdqspid.Length != 6 || dataIn.Zznjh.Length < 6 || dataIn.Zznjh.Substring(0, 6) != dataIn.Zzdqspid)
{
dataJy.Zb2bJyDis = "内机条码和商品ID不匹配!";
dataJy.Zb2bJyCode = "M0014";
JyEntity(dataJy.Zb2bJyDis, dataJy.Zb2bJyCode);
}
}
else if (dataIn.Zznjh != "" && dataIn.Zznjh.Substring(0, 1) != "0")
{
if (dataIn.Zzdqspid.Length != 7 || dataIn.Zznjh.Length < 7 || dataIn.Zznjh.Substring(0, 7) != dataIn.Zzdqspid)
{
dataJy.Zb2bJyDis = "内机条码和商品ID不匹配!";
dataJy.Zb2bJyCode = "M0014";
JyEntity(dataJy.Zb2bJyDis, dataJy.Zb2bJyCode);
}
}
else
{
dataJy.Zb2bJyDis = "内机条码格式错误!";
dataJy.Zb2bJyCode = "M0014";
JyEntity(dataJy.Zb2bJyDis, dataJy.Zb2bJyCode);
}
浙公网安备 33010602011771号