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

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
internal static class ExceptionHelper
{
    public static void Throw()
    {
         Throw("Syntax error.");
    }

    public static void Throw(string msg)
    {
        new Exception(msg);
     }
}

Просто и красиво! Архитектурное решение - архитектор жжет!

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

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

  • Исключения еще не изучал, в целом о целесообразности данного кода сказать ничего не могу, но лишний вызов метода не порадовал =\
    Хотя если прикинуть, то такой код еще и запутает программиста-пользователя данного класса. Или нет?
    Ответить
    • >>Исключения еще не изучал
      автор кода тоже.

      Лучше вообще не использовать исключения чем использовать их так.

      Дорогие дети, сегодня мы с вами познакомимся с азами ООП. В мире ООП принято делать разные классы для разных задач. По этому умные дяди кидают разные исключения в разных ситуациях, что бы другие умные дяди могли их ловить с помощью catch.
      А конструкция "new Exception" как-бы говорит нам: "привет, меня написал тупой даун, не знающий основ языка, на котором он пишет, возможно он пришел из мира PHP -- там это принято"

      >>но лишний вызов метода не порадовал
      о, да!
      лишний метод в C#.NET это драматичный факап по перформансу. Настоящие программисты на C# уменьшают число методов. И классов. И вообще лучше всего всю программу сделать в одном методе, и назвать его doAll, настоящие гуряки так и делают. Ведь .NET и Java и прочие объектно-ориентированные языки со статической типизацией под виртуальные машины для того и изобрели -- что бы писать по-меньше методов.
      Ответить
      • >>лишний метод в C#.NET это драматичный факап по перформансу
        Если рыть глубже, не существует языка, в котором лишний вызов был бы увеличением производительности, особенно в многозадачной среде, где крутятся десятки процессов. Поэтому каждый второй (может и загнул) вызов сопровождается кэш-промахом со всеми вытекающими..., в принципе даже переход по условию приводит к подобной ситуации, поэтому максимальная производительность не может быть в многозадачной среде. Долой все многозадачки!!! Да здравствует линейный вычислительный процесс!!! Кошмар какой-то!!! А в данном примере... ну и где тут говнокод? По Вашему лучше вызывать стопицот методов Throw("Syntax error.") ? Это почти как default для switch...
        Ответить
  • Я ошибаюсь, или новый объект исключения сразу eligible for garbage collection?
    Ответить
    • эксепшены не простые объекты, если уж он выпал, то дотнету не до сборки мусора...
      Ответить
  • Вообще не понятна суть кода
    new Exception(msg);
    в методе, у которого тип возвращаемого значения - void? В методе
    Throw(string msg)
    эксепшн создается и сразу теряется.
    Автор наверное хотел использовать код как-то вот так:
    throw ExceptionHelper.Throw("blah")
    Ответить
    • Нет, автор забыл слово throw.
      Мне вот вообще не понятно, почему
      ExceptionHelper.Throw("blah");
      может быть лучше чем
      throw new Exception("blah");
      Скрывать конкретный тип исключения смысла нет. Видимо, врождённая страсть к велосипедам.
      Ответить
      • > Видимо, врождённая страсть к велосипедам.
        Воистину!
        Ответить
      • throw можно забыть, а в хелпере, если один раз не забыл, то он всегда есть.
        Ответить
      • ви таки ничего не поние понимаете в велосипедах!
        Ответить
      • автор хотел запендюрить экстеншен метод, шоббулокрасиво, но забыл
        Ответить
    • тоже ничего не выйдет, ибо как вы и сказали - void
      Ответить
  • баян. rfc1925, (6a):
    It is always possible to add another level of indirection.
    (c) 1996, IETF.
    Ответить
  • х?F?U$P?F?U?H!Y"B$Y,Y$D$V"A$O"E,YX(L?I.B!Y,M"KR.C.B)N)A"Y:W$M)C!J$N!P?E?O"X"G?U!F G(P.X J(C)JNN?T(YT$Q)L(Q.P(J V,N(R,S J.Q.G.X?Q K(T"JV.I!Y)W!R"I!P:F:JL"I(H.Q?Y(FO)C:O.T,E:U,T(C.U)H!D(K$G:E"H(JX T?Z:J:O"RW(D,L?W)F!Z"T?V:X X"W,K:Q!J:VT.U!FY.ZP!A E,D(J(Z!J$VPL,L!Q$G.QO!P$B,Q"EV(W?K!L"C(R(C IPZ,F$X,T A$Z,A(G"U(W)L(G"S(Q.K.E(C?W$W$H,D)C:E:F.N"X(M:H.Y)C?FL$W:S?P.P)UB,E!Z,X"N"L.X K(J,F"H K(O!P$Y?V,Y.R(J,C$K)G$N G.F?X$N)T!T"V:X X"P:J)YT:Y X?F(Z(O,I"C$I"C.Y V,KY(G?B)W(I,N(S?G.N?Q:R)L?C:A)Z!E:I,CW G,K"S)Q?I?O!P(X!T)E)L,J?R?A B$Y)B:W"Q F(R R"Z$O)M,V,I Z.Q U"CF:T?M?S(L:X,M,R$T!S"E"AY:F,YS G,C!S$T?DV!G.L(U,R!L"OW:CN"W"Q)H!U"T"Z D$M!O!J?U.BE$Q!E(C:H)U)E R)O.F.C.Q$S.A$L:Y$T:S$N)Y)J$E!R E:I?Z!EX,M D"K,W)M.A!W E(I?HO Z F:T D A)U(X$N.Y:P?D!S E.L(Q!W$B:Q$M!G!K!B N(Y!O.L,Y$Y(V(L$V,M!D(Q:ZI:V,X$W.E$C,KP:M RO!L,H?O:X(X!S:W Y!Y(M:Y M,D$M)N)R!E$T(X:A!X"U$H!N,N,G(S)N:B.S)D$X.P!M(A"N)H Z?X,R JC?V)N:P?N$O,U)S!U$X)V(F(V?V)K"E?L:N!A P"E,L$S:P!Q)O.M:PH$M!P!G"S O$P Q?Y.NR?A.I$Q.L.KЭKETWDJUYWEXOURLBQLVUOFRHAOSYLTVRNLSJSCCGFJAWYOPYWYHTJTAMDINEMCFAJYHULURVQCMQPWUUXXLTZMAQOVERKDPOQHSXGDTJMPGPKMVQYBYANKIQTSGYXRONLLJZRLUETIJLXASPDVRLHTGJMWUTWFJFDCETEGSICDMIFRNQZWUUQPHNMMUGJRUEYFWMUPRBOPAMZXOLBXDQFZCSIDFYQSLYJTYXQGXUSWGWORSFIZJPCZVQRTYFDBDQZNW
    Ответить

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

Из-за тебя ушел bormand, guest!

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


    8