1. C# / Говнокод #8746

    +122

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    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_, 06 Декабря 2011

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

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

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

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

        >>но лишний вызов метода не порадовал
        о, да!
        лишний метод в C#.NET это драматичный факап по перформансу. Настоящие программисты на C# уменьшают число методов. И классов. И вообще лучше всего всю программу сделать в одном методе, и назвать его doAll, настоящие гуряки так и делают. Ведь .NET и Java и прочие объектно-ориентированные языки со статической типизацией под виртуальные машины для того и изобрели -- что бы писать по-меньше методов.
        Ответить
        • >>лишний метод в C#.NET это драматичный факап по перформансу
          Если рыть глубже, не существует языка, в котором лишний вызов был бы увеличением производительности, особенно в многозадачной среде, где крутятся десятки процессов. Поэтому каждый второй (может и загнул) вызов сопровождается кэш-промахом со всеми вытекающими..., в принципе даже переход по условию приводит к подобной ситуации, поэтому максимальная производительность не может быть в многозадачной среде. Долой все многозадачки!!! Да здравствует линейный вычислительный процесс!!! Кошмар какой-то!!! А в данном примере... ну и где тут говнокод? По Вашему лучше вызывать стопицот методов Throw("Syntax error.") ? Это почти как default для switch...
          Ответить
    • Я ошибаюсь, или новый объект исключения сразу eligible for garbage collection?
      Ответить
      • эксепшены не простые объекты, если уж он выпал, то дотнету не до сборки мусора...
        Ответить
        • вру, нагло вру, не увидел отсутствия throw
          Ответить
    • Вообще не понятна суть кода
      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.
      Ответить
    • показать все, что скрытоvanished
      Ответить

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