Подскажите как оптимизировать код - 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);
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д