Подскажите как оптимизировать код - 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);
        }
    }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.667 из 5
Похожие ответы