Подскажите как оптимизировать код - C#
Формулировка задачи:
Собственно вот...
void CalcValue(dynamic e) { var rez = e.GetType(); if (rez.Name == "PivotCellDisplayTextEventArgs") e.DisplayText = string.Format("{0:0}", 0); else if (rez.Name == "PivotGridCustomSummaryEventArgs") e.CustomValue = string.Format("{0:0}", 0); else return; string name = e.DataField.PrefilterColumnName; switch (name) { case "KOL_NE_DOPUSK": GetValueProp(e, "н/д"); break; case "KOL_NE_YAVKI": GetValueProp(e, "н/я"); break; case "KOL_NE_YAVKI_UV": GetValueProp(e, "уваж"); break; case "bud_kol_ne_dopusk": GetValueProp(e, "н/д", 0); break; case "bud_kol_ne_yavki": GetValueProp(e, "н/я", 0); break; case "bud_kol_ne_yavki_uv": GetValueProp(e, "уваж", 0); break; case "kon_kol_ne_dopusk": GetValueProp(e, "н/д", 1); break; case "kon_kol_ne_yavki": GetValueProp(e, "н/я", 1); break; case "kon_kol_ne_yavki_uv": GetValueProp(e, "уваж", 1); break; case "KOL_5": GetValueOcenki(e, 5); break; case "KOL_4": GetValueOcenki(e, 4); break; case "KOL_3": GetValueOcenki(e, 3); break; case "KOL_2": GetValueOcenki(e, 2); break; case "bud_kol_5": GetValueOcenki(e, 5, budKont: 0); break; case "bud_kol_4": GetValueOcenki(e, 4, budKont: 0); break; case "bud_kol_3": GetValueOcenki(e, 3, budKont: 0); break; case "bud_kol_2": GetValueOcenki(e, 2, budKont: 0); break; case "kon_kol_5": GetValueOcenki(e, 5, budKont: 1); break; case "kon_kol_4": GetValueOcenki(e, 4, budKont: 1); break; case "kon_kol_3": GetValueOcenki(e, 3, budKont: 1); break; case "kon_kol_2": GetValueOcenki(e, 2, budKont: 1); break; case "NA_5": GetValuePoOcenkam(e, 5); break; case "NA_5_4": GetValuePoOcenkam(e, 4); break; case "NA_5_4_3": GetValuePoOcenkam(e, 3); break; case "bud_NA_5": GetValuePoOcenkam(e, 5, budKont: 0); break; case "bud_NA_5_4": GetValuePoOcenkam(e, 4, budKont: 0); break; case "bud_NA_5_4_3": GetValuePoOcenkam(e, 3, budKont: 0); break; case "kon_NA_5": GetValuePoOcenkam(e, 5, budKont: 1); break; case "kon_NA_5_4": GetValuePoOcenkam(e, 4, budKont: 1); break; case "kon_NA_5_4_3": GetValuePoOcenkam(e, 3, budKont: 1); break; case "VSEGO_STUD": GetValuePoOcenkam(e, stCnt: true); break; case "VSEGO_STUD_SDALO": GetValuePoOcenkam(e, stCnt: true, Sdalo: true); break; case "bud_vsego_stud": GetValuePoOcenkam(e, stCnt: true, budKont: 0); break; case "bud_vsego_stud_sdalo": GetValuePoOcenkam(e, stCnt: true, Sdalo: true, budKont: 0); break; case "kon_vsego_stud": GetValuePoOcenkam(e, stCnt: true, budKont: 1); break; case "kon_vsego_stud_sdalo": GetValuePoOcenkam(e, stCnt: true, Sdalo: true, budKont: 1); break; case "BEZ2_C_ODNOY3": GetValuePoTroykam(e, 1); break; case "BEZ2_C_DVUMYA3": GetValuePoTroykam(e, 2); break; case "BEZ2_C_3IBOLEE3": GetValuePoTroykam(e, 3); break; case "bud_BEZ2_C_ODNOY3": GetValuePoTroykam(e, 1, budKont: 0); break; case "bud_BEZ2_C_DVUMYA3": GetValuePoTroykam(e, 2, budKont: 0); break; case "bud_BEZ2_C_3IBOLEE3": GetValuePoTroykam(e, 3, budKont: 0); break; case "kon_BEZ2_C_ODNOY3": GetValuePoTroykam(e, 1, budKont: 1); break; case "kon_BEZ2_C_DVUMYA3": GetValuePoTroykam(e, 2, budKont: 1); break; case "kon_BEZ2_C_3IBOLEE3": GetValuePoTroykam(e, 3, budKont: 1); break; case "BEZ2_VSE_3": GetValueBEZ2_VSE_3(e); break; case "bud_BEZ2_VSE_3": GetValueBEZ2_VSE_3(e, 0); break; case "kon_BEZ2_VSE_3": GetValueBEZ2_VSE_3(e, 1); break; case "NA_2_PO_1PREDM": GetValueNA_2_PO_PREDM(e, 1); break; case "NA_2_PO_2PREDM": GetValueNA_2_PO_PREDM(e, 2); break; case "NA_2_PO_3PREDM": GetValueNA_2_PO_PREDM(e, 3); break; case "NA_2_PO_4_I_BOLEE_PREDM": GetValueNA_2_PO_PREDM(e, 4); break; case "bud_NA_2_PO_1PREDM": GetValueNA_2_PO_PREDM(e, 1, 0); break; case "bud_NA_2_PO_2PREDM": GetValueNA_2_PO_PREDM(e, 2, 0); break; case "bud_NA_2_PO_3PREDM": GetValueNA_2_PO_PREDM(e, 3, 0); break; case "bud_NA_2_PO_4_I_BOLEE_PREDM": GetValueNA_2_PO_PREDM(e, 4, 0); break; case "kon_NA_2_PO_1PREDM": GetValueNA_2_PO_PREDM(e, 1, 1); break; case "kon_NA_2_PO_2PREDM": GetValueNA_2_PO_PREDM(e, 2, 1); break; case "kon_NA_2_PO_3PREDM": GetValueNA_2_PO_PREDM(e, 3, 1); break; case "kon_NA_2_PO_4_I_BOLEE_PREDM": GetValueNA_2_PO_PREDM(e, 4, 1); break; case "absolutnaya_uspevaemkst": GetValueAbsolutnaya_uspevaemkst(e); break; case "bud_absolutnaya_uspevaemkst": GetValueAbsolutnaya_uspevaemkst(e, 0); break; case "kon_absolutnaya_uspevaemkst": GetValueAbsolutnaya_uspevaemkst(e, 1); break; case "kachectvenaya_uspevaemkst": GetValueKachectvenaya_uspevaemkst(e); break; case "bud_kachectvenaya_uspevaemkst": GetValueKachectvenaya_uspevaemkst(e, 0); break; case "kon_kachectvenaya_uspevaemkst": GetValueKachectvenaya_uspevaemkst(e, 1); break; case "SREDNIY_BAL": GetValueSREDNIY_BAL(e); break; case "bud_SREDNIY_BAL": GetValueSREDNIY_BAL(e, 0); break; case "kon_SREDNIY_BAL": GetValueSREDNIY_BAL(e, 1); break; case "SREDNIY_BAL_OC": GetValueSREDNIY_BAL_OC(e); break; case "bud_SREDNIY_BAL_OC": GetValueSREDNIY_BAL_OC(e, 0); break; case "kon_SREDNIY_BAL_OC": GetValueSREDNIY_BAL_OC(e, 1); break; case "VSEGO_NESDLI": GetValueVSEGO_NESDLI(e); break; case "BUD_VSEGO_NESDLI": GetValueVSEGO_NESDLI(e, 0); break; case "KON_VSEGO_NESDLI": GetValueVSEGO_NESDLI(e, 1); break; } if (dataRefresh) e.CustomValue = e.CustomValue.ToString() == "" ? "0" : e.CustomValue.ToString() == "0,00" ? "0" : e.CustomValue; else e.DisplayText = e.DisplayText.ToString() == "" ? "0" : e.DisplayText.ToString() == "0,00" ? "0" : e.DisplayText; }
Решение задачи: «Подскажите как оптимизировать код»
textual
Листинг программы
internal class Program { private void GetValueProp(object someArg, string someString, int someInt = 0) { //ТУТ НИЧЕГО, ИБО ПРОСТО ПРИМЕР } //Собственно таблица функций private Dictionary<string, Action<object, object>> funcTable; public Program() { //Заполняем таблицу функций функциями funcTable = new Dictionary<string, Action<object, object>> { {"KOL_NE_DOPUSK", (o1, o2) => { GetValueProp(o1, "н/д"); }}, {"KOL_NE_YAVKI", (o1, o2) => { GetValueProp(o1, "н/я");}}, {"KOL_NE_YAVKI_UV", (o1, o2) => {GetValueProp(o1, "уваж"); }}, {"bud_kol_ne_dopusk", (o1, o2) => {GetValueProp(o1, "н/д", 0); }} }; } private static void Main(string[] args) { Program p = new Program(); p.Run(); Console.WriteLine("\nDone"); Console.ReadKey(); } private void Run() { string PrefilterColumnName = "KOL_NE_YAVKI_UV"; //Допустим, что получили это откуда-то извне //Вызываем нужную функцию. Передать нам тут нечего, поэтому - null и null funcTable[PrefilterColumnName](null, null); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д