简体   繁体   English

如果其他有效方式如何避免更多?

[英]How to avoid more if else in effective way?

I have a function like below but it seems more if else conditions.我有一个 function 如下所示,但如果其他条件似乎更多。 If there any similar effective way to handle the same.如果有任何类似的有效方法来处理相同的。 This function with my code properly working.这个 function 我的代码正常工作。

public bool UpdateAdjustmentRequest()
{
   if (ds1.Tables[0].Rows[0]["AppLev1Req"].ToString().Trim() == "True")
    {
        if (ds1.Tables[0].Rows[0]["AppLev2Req"].ToString().Trim() == "True")
        {
            if (ds1.Tables[0].Rows[0]["AppLev3Req"].ToString().Trim() == "True")
            {
                if (ds1.Tables[0].Rows[0]["AppLev4Req"].ToString().Trim() == "True")
                {
                    //1234
                    if ((ds1.Tables[0].Rows[0]["Approver1Status"].ToString().Trim() == "Approved") && (ds1.Tables[0].Rows[0]["Approver2Status"].ToString().Trim() == "Approved") && (ds1.Tables[0].Rows[0]["Approver3Status"].ToString().Trim() == "Approved") && (ds1.Tables[0].Rows[0]["Approver4Status"].ToString().Trim() == "Approved"))
                    {
                        if (UpdateApprovedRequest())
                        {                                       
                              //done 
                        }
                        else
                        {
                            return false;
                        }

                    }
                    else
                    {
                        return false;
                    }
                }
                else
                {
                    //123
                    if ((ds1.Tables[0].Rows[0]["Approver1Status"].ToString().Trim() == "Approved") && (ds1.Tables[0].Rows[0]["Approver2Status"].ToString().Trim() == "Approved") && (ds1.Tables[0].Rows[0]["Approver3Status"].ToString().Trim() == "Approved"))
                    {
                        if (UpdateApprovedRequest())
                        {
                                //done
                        }
                        else
                        {
                            return false;
                        }

                    }
                    else
                    {
                        return false;
                    }
                }
            }
            else if (ds1.Tables[0].Rows[0]["AppLev4Req"].ToString().Trim() == "True")
            {
                //124
                if ((ds1.Tables[0].Rows[0]["Approver1Status"].ToString().Trim() == "Approved") && (ds1.Tables[0].Rows[0]["Approver2Status"].ToString().Trim() == "Approved") && (ds1.Tables[0].Rows[0]["Approver4Status"].ToString().Trim() == "Approved"))
                {
                    if (UpdateApprovedRequest())
                    {
                         //done
                    }
                    else
                    {
                        return false;
                    }

                }
                else
                {
                    return false;
                }
            }
            else
            {
                //12
                if ((ds1.Tables[0].Rows[0]["Approver1Status"].ToString().Trim() == "Approved") && (ds1.Tables[0].Rows[0]["Approver2Status"].ToString().Trim() == "Approved"))
                {
                    if (UpdateApprovedRequest())
                    {
                          //done
                    }
                    else
                    {
                        return false;
                    }
                }
                else
                {
                    return true;
                }
            }
        }
        else if (ds1.Tables[0].Rows[0]["AppLev3Req"].ToString().Trim() == "True")
        {
            if (ds1.Tables[0].Rows[0]["AppLev4Req"].ToString().Trim() == "True")
            {
                //134
                if ((ds1.Tables[0].Rows[0]["Approver1Status"].ToString().Trim() == "Approved") && (ds1.Tables[0].Rows[0]["Approver3Status"].ToString().Trim() == "Approved") && (ds1.Tables[0].Rows[0]["Approver4Status"].ToString().Trim() == "Approved"))
                {
                    if (UpdateApprovedRequest())
                    {
                          //done
                    }
                    else
                    {
                        return false;
                    }

                }
                else
                {
                    return false;
                }
            }
            else
            {
                //13
                if ((ds1.Tables[0].Rows[0]["Approver1Status"].ToString().Trim() == "Approved") && (ds1.Tables[0].Rows[0]["Approver3Status"].ToString().Trim() == "Approved"))
                {
                    if (UpdateApprovedRequest())
                    {
                         //done
                    }
                    else
                    {
                        return false;
                    }
                }
                else
                {
                    Master.ReloadParentPage();
                    return false;
                }
            }
        }
        else if (ds1.Tables[0].Rows[0]["AppLev4Req"].ToString().Trim() == "True")
        {
            //14
            if ((ds1.Tables[0].Rows[0]["Approver1Status"].ToString().Trim() == "Approved") && (ds1.Tables[0].Rows[0]["Approver4Status"].ToString().Trim() == "Approved"))
            {
              if(UpdateApprovedRequest())
                {
                     //done
                }
                else
                {
                    return false;
                }
            }
            else
            {
                return false;
            }
        }
        else
        {
            //1
            if (ds1.Tables[0].Rows[0]["Approver1Status"].ToString().Trim() == "Approved")
            {
                if (UpdateApprovedRequest())
                {
                          //done
                }
                else
                {
                  return false;
                }

            }
            else
            {
                return false;
            }
        }

    }
    else if (ds1.Tables[0].Rows[0]["AppLev2Req"].ToString().Trim() == "True")
    {
        if (ds1.Tables[0].Rows[0]["AppLev3Req"].ToString().Trim() == "True")
        {
            if (ds1.Tables[0].Rows[0]["AppLev4Req"].ToString().Trim() == "True")
            {
                //234
                if ((ds1.Tables[0].Rows[0]["Approver2Status"].ToString().Trim() == "Approved") && (ds1.Tables[0].Rows[0]["Approver3Status"].ToString().Trim() == "Approved") && (ds1.Tables[0].Rows[0]["Approver4Status"].ToString().Trim() == "Approved"))
                {
                    if (UpdateApprovedRequest())
                    {
                         //done
                    }
                    else
                    {
                        return false;
                    }

                }
                else
                {
                    return false;
                }
            }
            else
            {
                //23
                if ((ds1.Tables[0].Rows[0]["Approver3Status"].ToString().Trim() == "Approved") && (ds1.Tables[0].Rows[0]["Approver2Status"].ToString().Trim() == "Approved"))
                {
                    if (UpdateApprovedRequest())
                    {
                       //done
                    }
                    else
                    {
                        return false;
                    }

                }
                else
                {
                    return false;
                }
            }
        }
        else if (ds1.Tables[0].Rows[0]["AppLev4Req"].ToString().Trim() == "True")
        {
            //24
            if ((ds1.Tables[0].Rows[0]["Approver2Status"].ToString().Trim() == "Approved") && (ds1.Tables[0].Rows[0]["Approver4Status"].ToString().Trim() == "Approved"))
            {
                if (UpdateApprovedRequest())
                {
                     //done
                }
                else
                {
                    return false;
                }

            }
            else
            {
                return false;
            }
        }
        else
        {
            //2
            if (ds1.Tables[0].Rows[0]["Approver2Status"].ToString().Trim() == "Approved")
            {
                if (UpdateApprovedRequest())
                {
                   //done
                }
                else
                {
                    return false;
                }

            }
            else
            {                            return false;
            }
        }
    }
    else if (ds1.Tables[0].Rows[0]["AppLev3Req"].ToString().Trim() == "True")
    {
        if (ds1.Tables[0].Rows[0]["AppLev4Req"].ToString().Trim() == "True")
        {
            //34
            if ((ds1.Tables[0].Rows[0]["Approver3Status"].ToString().Trim() == "Approved") && (ds1.Tables[0].Rows[0]["Approver4Status"].ToString().Trim() == "Approved"))
            {
                if (UpdateApprovedRequest())
                {
                       //done
                }
                else
                {
                    return false;
                }

            }
            else
            {
                return false;
            }
        }
        else
        {
            //3
            if (ds1.Tables[0].Rows[0]["Approver3Status"].ToString().Trim() == "Approved")
            {
                if (UpdateApprovedRequest())
                {
                      //done
                }
                else
                {
                    return false;
                }

            }
            else
            {
                return false;
            }
        }
    }
    else
    {
        //4
        if (ds1.Tables[0].Rows[0]["Approver4Status"].ToString().Trim() == "Approved")
        {
            if (UpdateApprovedRequest())
            {
                 //done
            }
            else
            {
                return false;
            }
        }
        else
        {
            return false;
        }
    }
    return true;
}

I haven't read your whole code because it is quite lengthy.我还没有阅读您的整个代码,因为它很长。 But as far as I can see, you have this pattern in your code:但据我所知,您的代码中有这种模式:

if(FirstCondition())
{
   if(SecondCondition())
   {
      if(ThirdCondition())
      {
          DoSomething();
          return true;
      }
      else
      {
         return false;
      }
   }
   else
   {
      return false;
   }
}
else
{
   return false;
}

Which is really difficult to read, because the if and else blocks tend to be really far away from each other (at least at the outer if s).这真的很难阅读,因为ifelse块往往彼此相距很远(至少在外部if s)。 You can easiliy avoid it by negating the conditions:您可以通过否定条件来轻松避免它:

if(!FirstCondition())
{
   return false;
}
if(!SecondCondition())
{
   return false;
}
if(!ThirdCondition())
{
   return false;
}

DoSomething();
return true;

This code is much clearer: Here, one can see immediately, that three preconditions are checked, and that some action is performed, if they are fulfilled, otherwise the method is left with a negative result.这段代码更清晰:在这里,可以立即看到,检查了三个先决条件,并且执行了一些操作,如果它们被满足,否则该方法将得到否定结果。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM