Подскажите как оптимизировать код - C#

Узнай цену своей работы

Формулировка задачи:

Собственно вот...
Листинг программы
  1. void CalcValue(dynamic e)
  2. {
  3. var rez = e.GetType();
  4. if (rez.Name == "PivotCellDisplayTextEventArgs")
  5. e.DisplayText = string.Format("{0:0}", 0);
  6. else if (rez.Name == "PivotGridCustomSummaryEventArgs")
  7. e.CustomValue = string.Format("{0:0}", 0);
  8. else return;
  9. string name = e.DataField.PrefilterColumnName;
  10. switch (name)
  11. {
  12. case "KOL_NE_DOPUSK":
  13. GetValueProp(e, "н/д");
  14. break;
  15. case "KOL_NE_YAVKI":
  16. GetValueProp(e, "н/я");
  17. break;
  18. case "KOL_NE_YAVKI_UV":
  19. GetValueProp(e, "уваж");
  20. break;
  21. case "bud_kol_ne_dopusk":
  22. GetValueProp(e, "н/д", 0);
  23. break;
  24. case "bud_kol_ne_yavki":
  25. GetValueProp(e, "н/я", 0);
  26. break;
  27. case "bud_kol_ne_yavki_uv":
  28. GetValueProp(e, "уваж", 0);
  29. break;
  30. case "kon_kol_ne_dopusk":
  31. GetValueProp(e, "н/д", 1);
  32. break;
  33. case "kon_kol_ne_yavki":
  34. GetValueProp(e, "н/я", 1);
  35. break;
  36. case "kon_kol_ne_yavki_uv":
  37. GetValueProp(e, "уваж", 1);
  38. break;
  39. case "KOL_5":
  40. GetValueOcenki(e, 5);
  41. break;
  42. case "KOL_4":
  43. GetValueOcenki(e, 4);
  44. break;
  45. case "KOL_3":
  46. GetValueOcenki(e, 3);
  47. break;
  48. case "KOL_2":
  49. GetValueOcenki(e, 2);
  50. break;
  51. case "bud_kol_5":
  52. GetValueOcenki(e, 5, budKont: 0);
  53. break;
  54. case "bud_kol_4":
  55. GetValueOcenki(e, 4, budKont: 0);
  56. break;
  57. case "bud_kol_3":
  58. GetValueOcenki(e, 3, budKont: 0);
  59. break;
  60. case "bud_kol_2":
  61. GetValueOcenki(e, 2, budKont: 0);
  62. break;
  63. case "kon_kol_5":
  64. GetValueOcenki(e, 5, budKont: 1);
  65. break;
  66. case "kon_kol_4":
  67. GetValueOcenki(e, 4, budKont: 1);
  68. break;
  69. case "kon_kol_3":
  70. GetValueOcenki(e, 3, budKont: 1);
  71. break;
  72. case "kon_kol_2":
  73. GetValueOcenki(e, 2, budKont: 1);
  74. break;
  75. case "NA_5":
  76. GetValuePoOcenkam(e, 5);
  77. break;
  78. case "NA_5_4":
  79. GetValuePoOcenkam(e, 4);
  80. break;
  81. case "NA_5_4_3":
  82. GetValuePoOcenkam(e, 3);
  83. break;
  84. case "bud_NA_5":
  85. GetValuePoOcenkam(e, 5, budKont: 0);
  86. break;
  87. case "bud_NA_5_4":
  88. GetValuePoOcenkam(e, 4, budKont: 0);
  89. break;
  90. case "bud_NA_5_4_3":
  91. GetValuePoOcenkam(e, 3, budKont: 0);
  92. break;
  93. case "kon_NA_5":
  94. GetValuePoOcenkam(e, 5, budKont: 1);
  95. break;
  96. case "kon_NA_5_4":
  97. GetValuePoOcenkam(e, 4, budKont: 1);
  98. break;
  99. case "kon_NA_5_4_3":
  100. GetValuePoOcenkam(e, 3, budKont: 1);
  101. break;
  102. case "VSEGO_STUD":
  103. GetValuePoOcenkam(e, stCnt: true);
  104. break;
  105. case "VSEGO_STUD_SDALO":
  106. GetValuePoOcenkam(e, stCnt: true, Sdalo: true);
  107. break;
  108. case "bud_vsego_stud":
  109. GetValuePoOcenkam(e, stCnt: true, budKont: 0);
  110. break;
  111. case "bud_vsego_stud_sdalo":
  112. GetValuePoOcenkam(e, stCnt: true, Sdalo: true, budKont: 0);
  113. break;
  114. case "kon_vsego_stud":
  115. GetValuePoOcenkam(e, stCnt: true, budKont: 1);
  116. break;
  117. case "kon_vsego_stud_sdalo":
  118. GetValuePoOcenkam(e, stCnt: true, Sdalo: true, budKont: 1);
  119. break;
  120. case "BEZ2_C_ODNOY3":
  121. GetValuePoTroykam(e, 1);
  122. break;
  123. case "BEZ2_C_DVUMYA3":
  124. GetValuePoTroykam(e, 2);
  125. break;
  126. case "BEZ2_C_3IBOLEE3":
  127. GetValuePoTroykam(e, 3);
  128. break;
  129. case "bud_BEZ2_C_ODNOY3":
  130. GetValuePoTroykam(e, 1, budKont: 0);
  131. break;
  132. case "bud_BEZ2_C_DVUMYA3":
  133. GetValuePoTroykam(e, 2, budKont: 0);
  134. break;
  135. case "bud_BEZ2_C_3IBOLEE3":
  136. GetValuePoTroykam(e, 3, budKont: 0);
  137. break;
  138. case "kon_BEZ2_C_ODNOY3":
  139. GetValuePoTroykam(e, 1, budKont: 1);
  140. break;
  141. case "kon_BEZ2_C_DVUMYA3":
  142. GetValuePoTroykam(e, 2, budKont: 1);
  143. break;
  144. case "kon_BEZ2_C_3IBOLEE3":
  145. GetValuePoTroykam(e, 3, budKont: 1);
  146. break;
  147. case "BEZ2_VSE_3":
  148. GetValueBEZ2_VSE_3(e);
  149. break;
  150. case "bud_BEZ2_VSE_3":
  151. GetValueBEZ2_VSE_3(e, 0);
  152. break;
  153. case "kon_BEZ2_VSE_3":
  154. GetValueBEZ2_VSE_3(e, 1);
  155. break;
  156. case "NA_2_PO_1PREDM":
  157. GetValueNA_2_PO_PREDM(e, 1);
  158. break;
  159. case "NA_2_PO_2PREDM":
  160. GetValueNA_2_PO_PREDM(e, 2);
  161. break;
  162. case "NA_2_PO_3PREDM":
  163. GetValueNA_2_PO_PREDM(e, 3);
  164. break;
  165. case "NA_2_PO_4_I_BOLEE_PREDM":
  166. GetValueNA_2_PO_PREDM(e, 4);
  167. break;
  168. case "bud_NA_2_PO_1PREDM":
  169. GetValueNA_2_PO_PREDM(e, 1, 0);
  170. break;
  171. case "bud_NA_2_PO_2PREDM":
  172. GetValueNA_2_PO_PREDM(e, 2, 0);
  173. break;
  174. case "bud_NA_2_PO_3PREDM":
  175. GetValueNA_2_PO_PREDM(e, 3, 0);
  176. break;
  177. case "bud_NA_2_PO_4_I_BOLEE_PREDM":
  178. GetValueNA_2_PO_PREDM(e, 4, 0);
  179. break;
  180. case "kon_NA_2_PO_1PREDM":
  181. GetValueNA_2_PO_PREDM(e, 1, 1);
  182. break;
  183. case "kon_NA_2_PO_2PREDM":
  184. GetValueNA_2_PO_PREDM(e, 2, 1);
  185. break;
  186. case "kon_NA_2_PO_3PREDM":
  187. GetValueNA_2_PO_PREDM(e, 3, 1);
  188. break;
  189. case "kon_NA_2_PO_4_I_BOLEE_PREDM":
  190. GetValueNA_2_PO_PREDM(e, 4, 1);
  191. break;
  192. case "absolutnaya_uspevaemkst":
  193. GetValueAbsolutnaya_uspevaemkst(e);
  194. break;
  195. case "bud_absolutnaya_uspevaemkst":
  196. GetValueAbsolutnaya_uspevaemkst(e, 0);
  197. break;
  198. case "kon_absolutnaya_uspevaemkst":
  199. GetValueAbsolutnaya_uspevaemkst(e, 1);
  200. break;
  201. case "kachectvenaya_uspevaemkst":
  202. GetValueKachectvenaya_uspevaemkst(e);
  203. break;
  204. case "bud_kachectvenaya_uspevaemkst":
  205. GetValueKachectvenaya_uspevaemkst(e, 0);
  206. break;
  207. case "kon_kachectvenaya_uspevaemkst":
  208. GetValueKachectvenaya_uspevaemkst(e, 1);
  209. break;
  210. case "SREDNIY_BAL":
  211. GetValueSREDNIY_BAL(e);
  212. break;
  213. case "bud_SREDNIY_BAL":
  214. GetValueSREDNIY_BAL(e, 0);
  215. break;
  216. case "kon_SREDNIY_BAL":
  217. GetValueSREDNIY_BAL(e, 1);
  218. break;
  219. case "SREDNIY_BAL_OC":
  220. GetValueSREDNIY_BAL_OC(e);
  221. break;
  222. case "bud_SREDNIY_BAL_OC":
  223. GetValueSREDNIY_BAL_OC(e, 0);
  224. break;
  225. case "kon_SREDNIY_BAL_OC":
  226. GetValueSREDNIY_BAL_OC(e, 1);
  227. break;
  228. case "VSEGO_NESDLI":
  229. GetValueVSEGO_NESDLI(e);
  230. break;
  231. case "BUD_VSEGO_NESDLI":
  232. GetValueVSEGO_NESDLI(e, 0);
  233. break;
  234. case "KON_VSEGO_NESDLI":
  235. GetValueVSEGO_NESDLI(e, 1);
  236. break;
  237. }
  238. if (dataRefresh)
  239. e.CustomValue = e.CustomValue.ToString() == "" ? "0" : e.CustomValue.ToString() == "0,00" ? "0" : e.CustomValue;
  240. else
  241. e.DisplayText = e.DisplayText.ToString() == "" ? "0" : e.DisplayText.ToString() == "0,00" ? "0" : e.DisplayText;
  242. }

Решение задачи: «Подскажите как оптимизировать код»

textual
Листинг программы
  1. internal class Program
  2.     {
  3.         private void GetValueProp(object someArg, string someString, int someInt = 0)
  4.         {
  5.             //ТУТ НИЧЕГО, ИБО ПРОСТО ПРИМЕР
  6.         }
  7.  
  8.         //Собственно таблица функций
  9.         private Dictionary<string, Action<object, object>> funcTable;
  10.  
  11.         public Program()
  12.         {
  13.             //Заполняем таблицу функций функциями
  14.             funcTable = new Dictionary<string, Action<object, object>>
  15.             {
  16.                 {"KOL_NE_DOPUSK", (o1, o2) => { GetValueProp(o1, "н/д"); }},
  17.                 {"KOL_NE_YAVKI", (o1, o2) => { GetValueProp(o1, "н/я");}},
  18.                 {"KOL_NE_YAVKI_UV", (o1, o2) => {GetValueProp(o1, "уваж"); }},
  19.                 {"bud_kol_ne_dopusk", (o1, o2) => {GetValueProp(o1, "н/д", 0); }}
  20.             };
  21.         }
  22.  
  23.         private static void Main(string[] args)
  24.         {
  25.             Program p = new Program();
  26.             p.Run();
  27.  
  28.             Console.WriteLine("\nDone");
  29.             Console.ReadKey();
  30.         }
  31.  
  32.         private void Run()
  33.         {
  34.             string PrefilterColumnName = "KOL_NE_YAVKI_UV"; //Допустим, что получили это откуда-то извне
  35.  
  36.             //Вызываем нужную функцию. Передать нам тут нечего, поэтому - null и null
  37.             funcTable[PrefilterColumnName](null, null);
  38.         }
  39.     }

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


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

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

15   голосов , оценка 3.667 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы