Member 13716754 Ответов: 1

Рекомендации по написанию нескольких условий if else с использованием ASP.NET с#


Я хочу написать несколько условий if else, используя лучшие практики. Вот мой код.
<pre>public class HomeController : Controller
    {
        //Creating object of Result class
        Result result = new Result();

        // GET: Home
        public async Task<ActionResult> Index(string key, string value)
        {
            DBConnection dbConnection = new DBConnection();
            dbConnection.MakeConnection();
            try
            {
                dbConnection.oracleCommand.CommandText = "QUERY";
                OracleDataReader Reader = dbConnection.oracleCommand.ExecuteReader();
                Reader.Read();
                count = Reader.GetInt16(0);

                for (int i = 0; i < count; i++)
                {
                    //Updating records
                    dbConnection.oracleCommand.CommandText = "QUERY";
                    dbConnection.oracleCommand.ExecuteNonQuery();

                    dbConnection.oracleCommand.CommandText = "QUERY";
                    OracleDataReader Reader2 = dbConnection.oracleCommand.ExecuteReader();

                    while (Reader2.Read())
                    {
                        //Getting keyname and keyvalue
                        keyName = (Reader2.GetValue(1)).ToString();
                        keyValue = (Reader2.GetValue(2)).ToString();
                    }

                    dbConnection.oracleCommand.CommandText = "QUERY";
                    OracleDataReader Reader3 = dbConnection.oracleCommand.ExecuteReader();
                    while (Reader3.Read())
                    {
                        if ((!Reader3.GetValue(1).Equals(System.DBNull.Value)))
                        {
                            //Checking api type
                            if ((Reader3.GetValue(1).ToString() == ("REST")))
                            {
                                dbConnection.oracleCommand.CommandText = "QUERY";
                                OracleDataReader Reader4 = dbConnection.oracleCommand.ExecuteReader();

                                while (Reader4.Read())
                                {

                                    if ((!Reader4.GetValue(0).Equals(System.DBNull.Value)))
                                    {
                                        //Getting url
                                        url = Reader4.GetValue(1).ToString();
                                        //Checking whether a get or a post
                                        if ((Reader4.GetValue(0).ToString() == ("GET")))
                                        {
                                            RestCall restCall = new RestCall();
                                            await restCall.RunAsync(keyName, keyValue);

                                        }
                                    }
                                    else if ((Reader4.GetValue(0).ToString() == ("POST")))
                                    {
                                        //"Do a rest call for post method.";
                                        RestCall restCall = new RestCall();
                                        await restCall.RunAsync(keyName, keyValue);
                                    }
                                    else
                                    {
                                        //"Not a get or a post";
                                        errorMessage = "Error";
                                    }
                                }
                            }
                        }
                        else
                        {
                            //"A null value.";
                            errorMessageNull = "A null value.";
                        }
                    }

                    //Soap
                    if ((!Reader3.GetValue(1).Equals(System.DBNull.Value)))
                    {
                        if ((Reader3.GetValue(1).ToString() == ("SOAP")))
                        {
                            dbConnection.oracleCommand.CommandText = "QUERY";
                            OracleDataReader Reader4 = dbConnection.oracleCommand.ExecuteReader();
                            while (Reader4.Read())
                            {

                                if ((!Reader4.GetValue(0).Equals(System.DBNull.Value)))
                                {
                                    //Getting url
                                    url = Reader4.GetValue(1).ToString();
                                    //Read function
                                    if ((Reader4.GetValue(0).ToString() == ("READ")))
                                    {
                                        //SoapCall soapCall = new SoapCall();
                                        //soapCall.DoSoapCall();
                                    }
                                }
                                //Create function
                                else if ((Reader4.GetValue(0).ToString() == ("CREATE")))
                                {
                                    //"Do a soap call for post method.";
                                }
                                else
                                {
                                    //"Not a get or a post";
                                    errorMessage = "Error";
                                }
                            }

                        }
                        else
                        {
                            //"Not a get or a post";
                            errorMessage = "Error";
                        }

                    }
                    else
                    {
                        //"Not a get or a post";
                        errorMessage = "Error";
                    }
                    Reader.Dispose();
                    Reader3.Dispose();
                    dbConnection.CloseConnection();
                }
            }
            catch (Exception e)
            {
                exception = e.Message.ToString();
            }

Я хочу выполнить эти запросы, если они удовлетворяют определенным условиям. После этого я хочу сделать отдых и мыльные звонки. Существует ли какой-либо метод написания этого кода без использования нескольких условий if else? Я имею в виду более читабельный способ.

Что я уже пробовал:

Другого способа у меня и в мыслях не было.

1 Ответов

Рейтинг:
1

F-ES Sitecore

Вы можете избавиться от немедленного вложенности, как это

if (conditionA)
{
    if (conditionB)
    {
        DoSomething();
    }
}


но ставя все условия в одно и то же если

if (conditionA && conditionB)
{
    DoSomething();
}


Для кода, который обрабатывает считыватель, вы можете просто поместить его в свою собственную функцию, как передать считыватель в качестве параметра.

if (conditionA && conditionB)
{
    ProcessReader(Reader4);
}


Если у вас все еще слишком много вложенности, то повторите процесс помещения части вложенного кода в функцию, которую вы затем вызываете.