Си диез / Говнокод #9353 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
public  static  string      LoadGridDT          (TObjects pList, out DataTable Dt, params object[] pArgs)
...              
                switch (pList)
                {
                    case TObjects.Radio                 :
                        if (pArgs.Length == 1 && pArgs[0] is int)
                            vLoadResult = Protocol.Radionuclide.Load((int)pArgs[0], out Dt);
                        else if (pArgs.Length > 1 && pArgs[0] is int && pArgs[1] is bool)
                            vLoadResult = Part2.Radionuclide.Load((int)pArgs[0], out Dt);
                        else vLoadResult = Radionuclide.Load(out Dt);
                        break;
                    case TObjects.Protocol              :
                        // [0](int): Тип протокола; [1](int): Очередь; [2](bool): Активность; [3](int): Объект
                if (pArgs.Length > 3 && pArgs[0] is int && pArgs[1] is int && pArgs[2] is bool && pArgs[3] is int)
                    if (pArgs.Length > 4 && pArgs[4] is int)
                        vLoadResult = Protocol.LoadList((int)pArgs[0], (int)pArgs[1], (int)pArgs[3], (bool)pArgs[2], out Dt, (int)pArgs[4]);
                    else
                    {
                        if (pArgs.Length > 4 && pArgs[4] is bool && (bool)pArgs[4] == true) // 5-й аргумент для загрузки детализированного списка протоколов с учетом объекта отбора
                            vLoadResult = Protocol.Load((int)pArgs[0], (int)pArgs[1], (int)pArgs[3], (bool)pArgs[2], out Dt);
                        else // недетализированный список протоколов с учетом объекта отбора
                            vLoadResult = Protocol.LoadList((int)pArgs[0], (int)pArgs[1], (int)pArgs[3], (bool)pArgs[2], out Dt);
                    }
                else
                // [0](List<int>): Типы протокола; [1](int): Очередь; [2](int): Id место отбора; [3](bool): Активность
                if (pArgs.Length > 3 && pArgs[0] is List<int> && pArgs[1] is int && pArgs[2] is int && pArgs[3] is bool)
                    if (pArgs.Length > 4 && pArgs[4] is int)
                        vLoadResult = Protocol.LoadList((List<int>)pArgs[0], (int)pArgs[1], (int)pArgs[2], (bool)pArgs[3], out Dt, (int)pArgs[4]);
                    else
                        vLoadResult = Protocol.Load((List<int>)pArgs[0], (int)pArgs[1], (int)pArgs[2], (bool)pArgs[3], out Dt);
                else
                // [0](List<int>): Типы протокола; [1](int): Очередь; [2](bool): Активность
                if (pArgs.Length > 2 && pArgs[0] is List<int> && pArgs[1] is int && pArgs[2] is bool)
                    if (pArgs.Length > 3 && pArgs[3] is int)
                        vLoadResult = Protocol.LoadList((List<int>)pArgs[0], (int)pArgs[1], (bool)pArgs[2], out Dt, (int)pArgs[3]);
                    else
                        vLoadResult = Protocol.LoadList((List<int>)pArgs[0], (int)pArgs[1], (bool)pArgs[2], out Dt);
                else
                // [0](int): Тип протокола; [1](int): Очередь; [2](bool): Активность;
                if (pArgs.Length > 2 && pArgs[0] is int && pArgs[1] is int && pArgs[2] is bool)
                    if (pArgs.Length > 4 && pArgs[3] is bool && pArgs[4] is int)
                        vLoadResult = Protocol.LoadList((int)pArgs[0], (int)pArgs[1], (bool)pArgs[2], out Dt, (int)pArgs[4]);
                    else
                        vLoadResult = Protocol.Load((int)pArgs[0], (int)pArgs[1], (bool)pArgs[2], out Dt);
                else
                // [0](int): Тип протокола; [1](int): Очередь
                if (pArgs.Length > 1 && pArgs[0] is int && pArgs[1] is int)
                    if (pArgs.Length > 2 && pArgs[2] is int)
                        vLoadResult = Protocol.LoadList((int)pArgs[0], (int)pArgs[1], out Dt, (int)pArgs[2]);
                    else
                        vLoadResult = Protocol.LoadList((int)pArgs[0], (int)pArgs[1], out Dt);
                else
...

Метод 500+ вот такого рода строк...

Запостил: gcoder gcoder, (Updated )

Комментарии (11) RSS

  • Ой *ля, сочувствую, можно вешаться если придется что то править.
    Ответить
  • Фишка еще в том, что этот метод вызывается из другого:
    public static int LoadListData (UIComboBox pEdit, TObjects pList, int pFocusID, bool pShowErr, params object[] pArgs),
    часть элементов pArgs используется в нем, а часть в вышеописанном...
    Ответить
  • Ну, видимо человк не знал, что метод можно перегрузить. Хотя и отрефакторить будет не так сложно - вынести каждый if в отдельную функцию, а из условия if'a сделать список аргументов.
    Ответить
    • > не знал, что метод можно перегрузить
      Знал он, что можно перегружать, он, видимо, хотел написать 1 супер метод загрузки всего везде. =) А частные перегруженные методы загрузки конкретного справочника с конкретными параметрами как раз и вызываются...
      "Хотя и отрефакторить будет не так сложно"
      Угу, да и дописать / поправить тоже...
      Ответить
      • Да и вообще, такого кода и подхода полно. В формах, например, кроме прочих конструкторов, бывает 1 с "params object[]", в который может передаваться переменное кол-во разнообразных параметров штук до 10... =)
        Ответить
  • у"T F)L)P$K:L.N.N,F P,D G(L:V"ZC?LU,J!M"I"F"I D(S(A)C:D$Q:R?Z)O.K$OM)W W?S W)K)RJ(N:E)U(M"E(B.W$S!H$Z SJ)S$X)O.A)R!C F)D)CI:I L)C.C C:K.IJ)S.P"V:D,B"IS,J)Q.L!B.H,M!H!A E.Q)K)U(H(L"MG?J(K,U!YUU B"U)OC!A?G)L(H,V H.K"X.S(D)D!W)E,B"A:L!C(T$G!LJ:X:V$ZT)C.X!H)WV D:F,H(Q(Q?Q(O(I.N X.W?N:J!F$TR"R(R U(N!L:N)B VM$O,B"S"N?I!J J:T!V)D,V$Q)P)X)E?Y:I:V,X"TU?EC$B"H E!AI(V!C$FJU?L.RJ"P!P:U,R"T?SZ"P(Q:QB?J?O,X!H(T.R:Y:F,V!M!P.K,F.X(HI)B:Y,P!I"P"P"RG:R)E!U)N$U"OY!U.B?R)C!N?V$NEN"S:F(E:I"B(N:F,ZN N S(B,H M:X)H,GX G:T!D!BKA:L.R.C(O!U?Q)Q!N$E$H,EY)V:P(R,C"IA.P"M:R"TN"X$C!O P"W?L$V:N:V,UN,W:C"R.R"X?X?A:J(E(B(T.IS!N?A:V G(Y:O$P)X?AS(C(C!J.H"Z)R(Y.E N,K)Y.KA$S"B$N"K.X,Z)V:E:F.F.M:I)V:C)T)O$P(A)C"JPK"Q!I:P!M V(S,W"U(B.N(A)T(Y X.T)T:T!A!P$J:L.V:S$OE:D:G?X O.M?V:L)Q,F$A$X)ZI:Y"I(B?C(I K)M.S"C!F)I)E$K?Y:S:I(C(R:S:S,J$J I?R"C?L)YT"I OЬTRTXBWINRBYOYZRIYZRPNJEXNJOBKRANDGOWVXTAYJJZPFVSXSKTNWQLSOKLZWRZPNDGZRDGDWVNWWWMKSXHCVKPQQNNNBUCGJBKTSTOZDERUJAINRATFUOVDGPLTDTRQVKTAENURTRPDBLVRKMGXHGELGOTLVFPBRYXEHDHZOQSTYCQZQWAYKNXFBHSUOITBJMVSFMYZGDEAJKZEBOTPDQPHQPVSIZVWAVNOMUMWXPQHJD
    Ответить

Добавить комментарий

Я, guest, находясь в здравом уме и твердой памяти, торжественно заявляю:

    А не использовать ли нам bbcode?


    8