Дублируй код в IF, если еще блоки ... как мне сделать его короче? - PullRequest
0 голосов
/ 16 декабря 2010
if ((e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["LanguageID"].ToString()) == null) 
                {
                    Int32 LangID = -1;
                    string QuesTypeID = com.Encrypt(TypeID.ToString(), com.KeyCode);
                    string LanguageID = com.Encrypt(LangID.ToString(), com.KeyCode);
                    string QuesID = com.Encrypt(ID.ToString(), com.KeyCode);
                    string PID = com.Encrypt(radGridQues.CurrentPageIndex.ToString(), com.KeyCode.ToString());
                    Response.Redirect(ROSDAAB.Constants.SiteURL + "editQues/" + "QuesID/" + QuesID + "/" + PID + "/" + QuesTypeID + "/" + LanguageID);
                }
                else   
                {

                    Int32 LangID = Convert.ToInt32(e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["LanguageID"].ToString());
                    string QuesTypeID = com.Encrypt(TypeID.ToString(), com.KeyCode);
                    string LanguageID = com.Encrypt(LangID.ToString(), com.KeyCode);
                    string QuesID = com.Encrypt(ID.ToString(), com.KeyCode);
                    string PID = com.Encrypt(radGridQues.CurrentPageIndex.ToString(), com.KeyCode.ToString());
                    Response.Redirect(ROSDAAB.Constants.SiteURL + "editQues/" + "QuesID/" + QuesID + "/" + PID + "/" + QuesTypeID + "/" + LanguageID);
                }

[EDIT] Это дублирующий код в IF, если еще блоки ... как мне сделать его короче?

Ответы [ 6 ]

3 голосов
/ 16 декабря 2010
Int32 LangID = -1;
if (e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["LanguageID"] != null) 
{
    LangID = Convert.ToInt32(e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["LanguageID"].ToString());
}
string QuesTypeID = com.Encrypt(TypeID.ToString(), com.KeyCode);
string LanguageID = com.Encrypt(LangID.ToString(), com.KeyCode);
string QuesID = com.Encrypt(ID.ToString(), com.KeyCode);
string PID = com.Encrypt(radGridQues.CurrentPageIndex.ToString(), com.KeyCode.ToString());
Response.Redirect(ROSDAAB.Constants.SiteURL + "editQues/" + "QuesID/" + QuesID + "/" + PID + "/" + QuesTypeID + "/" + LanguageID);

Вот что я сделал здесь:

  • извлеките LangID из if, установите для него значение по умолчанию -1 и обновите его, только если LanguageID не равен нулю.
  • поместите общую часть, которая была продублирована в ваших предложениях if / else после проверки if, так как else больше не требуется вообще.
1 голос
/ 20 декабря 2010

string QuesTypeID = com.Encrypt (TypeID.ToString (), com.KeyCode);string LanguageID = com.Encrypt (LangID.ToString (), com.KeyCode);string QuesID = com.Encrypt (ID.ToString (), com.KeyCode);строка PID = com.Encrypt (radGridQues.CurrentPageIndex.ToString (), com.KeyCode.ToString ());

    Int32 LangId = -1;

    if ((e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["LanguageID"].ToString()) != null) 
    {
                Int32 LangID = Convert.ToInt32(e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["LanguageID"].ToString());
    }


    Response.Redirect(ROSDAAB.Constants.SiteURL + "editQues/" + "QuesID/" + QuesID + "/" + PID + "/" + QuesTypeID + "/" + LanguageID);
1 голос
/ 16 декабря 2010

Вы также можете использовать троичный оператор для уменьшения повторов:

var tempLangId = e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["LanguageID"];
Int32 LangID = tempLangId == null ? -1 : Convert.ToInt32(tempLangId);
1 голос
/ 16 декабря 2010

Вы ниже код это: -

   bool isOk = String.IsNullOrEmpty(e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["LanguageID"].ToString());    
   Int32 LangID = isOk ? -1 : Convert.ToInt32(e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["LanguageID"].ToString()); ;
   string QuesTypeID = com.Encrypt(TypeID.ToString(), com.KeyCode);
   string LanguageID = com.Encrypt(LangID.ToString(), com.KeyCode);
   string QuesID = com.Encrypt(ID.ToString(), com.KeyCode);
   string PID = com.Encrypt(radGridQues.CurrentPageIndex.ToString(), com.KeyCode.ToString());
   Response.Redirect(ROSDAAB.Constants.SiteURL + "editQues/" + "QuesID/" + QuesID + "/" + PID + "/" + QuesTypeID + "/" + LanguageID);
1 голос
/ 16 декабря 2010

Зачем использовать ToString ()?

if (e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["LanguageID"] == null)

Просто помните о базовом типе

Int32 LangID = (Int32)e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["LanguageID"];

Так что для короче:

int LangID = e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["LanguageID"] != null ? (int)e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["LanguageID"] : -1;
string QuesTypeID = com.Encrypt(TypeID.ToString(), com.KeyCode);
string LanguageID = com.Encrypt(LangID.ToString(), com.KeyCode);
string QuesID = com.Encrypt(ID.ToString(), com.KeyCode);
string PID = com.Encrypt(radGridQues.CurrentPageIndex.ToString(), com.KeyCode.ToString());
Response.Redirect(ROSDAAB.Constants.SiteURL + "editQues/" + "QuesID/" + QuesID + "/" + PID + "/" + QuesTypeID + "/" + LanguageID);

Если проверка на ноль не работает, попробуйте !Convert.IsDBNull(),, если ваши значения получены из источника данных.

int LangID = !Convert.IsDBNull(e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["LanguageID"]) ? (int)e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["LanguageID"] : -1;
0 голосов
/ 16 декабря 2010

хорошо, я попробовал это .. это сработало

 if ((e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["LanguageID"].ToString()) == String.Empty)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...