一段代码的优化过程

自己写了一段判断,需求是:

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

                                    }

posted on 2011-05-30 16:24  .net 虾米  阅读(312)  评论(0)    收藏  举报

导航