您的位置:首页 > 编程语言

一段代码的优化过程

2011-05-30 16:24 204 查看
自己写了一段判断,需求是:

如果 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);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: