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

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
//  Этот метод проверяет, создано ли окошло лога, если не создано, то создает его
        public void CheckLogWnd()
        {
            try
            {
                if (logWnd.IsAccessible)
                {
                }
            }
            catch
            {
                logWnd = new LogWnd();
            }
        }

Не помню как сделать это правильно :(

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

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

  • не помню? или не знаю?
    желание выебнуться всеже сильнее ))
    Ответить
    • я на шарпе просто очень-очень давно писал, года 2 - 3 назад. Тогда таких проблем не было, но пхп разлагает.... Я правда не помню ?(
      Ответить
  • паходу try нужен для таво, еси када logWnd = null,
    такшо правильно будет примерно так (без эксепшенов):
    public void CheckLogWnd() {
    if(logWnd == null) logWnd = new LogWnd();
    }
    Ответить
  • за что минусуете-то? говнокод фееричен 🙂 интересно, причем тут пхп - в нем что, нет null'ов? %)
    Ответить
    • Вообще да, говнокод жесткий )))
      а минусы, я думаю ставят потому что автор запалился что это его код.
      Если бы он сказал что это написали идиоты с его работы, то народ бы плюсы ставил.
      Ответить
      • та всё это фигня, плюсы, минусы... говонкод - есть говнокод, и циферка справа на это никак не влияет.
        Ответить
        • но его не покажу, потому что его много, и я его привожу в красивое состояние 🙂
          Ответить
  • А что здесб говнокодистого? Просто try\catch?
    Ответить
    • Как минимум за конструкцию catch {...} без указания типа исключения руки нужно сразу обрывать.
      Ответить
    • говнокодисто то что, при малейшей возможности, надо избегать явной генерации исключений, внимательно кодить с учётом возникновения возможных исключений... т.е. явно кодить так чтобы генерились исключения - нехорошо.
      розумеется, о тех исключениях, которые не зависят непосредственно от твоего кода речь не идёт, но и тут стоит быть окуратным.

      а в "catch {...}" нет ничё страшного, ведь это одно и то же, что "catch(Exception) {...}" када не нужна ссылка на экземпляр исключения. это тоже самое, что и ленивый "catch(...) {}" в C/C++.
      Ответить
      • //а в "catch {...}" нет ничё страшного, ведь это одно и то же, что "catch(Exception) {...}" када не нужна ссылка на экземпляр исключения. это тоже самое, что и ленивый "catch(...) {}" в C/C++.

        я тоже так считаю, поэтому везде где может вывалиться эксепшн, причем для меня не важно какой, я никогда не указываю его тип...
        Ответить
        • говнокод в том, что словиться здесь может только NullReferenceException (геттер IsAccessible, кидающий какие-то свои исключения - это за гранью разумного). и вместо обычного сравнения объекта с нуллом мы кидаем аж целое исключение %) лишний иф тоже умиляет, но это уже мелочи 🙂
          а catch {...} - это всегда говнокод, у нормального программиста не должно быть ситуаций, когда ему не важно, какой эксепшн вывалился и где.
          Ответить
          • это самый первый вариант был. Для начала оно должно работать, а шлифую код обычно когда основная часть написана... 🙂 Спасибо за советы 🙂
            Ответить
          • ну а тогда как быть, если код может генерить херову тучю эксепшенов, и выброс любого из них означяет неуспешное выполнение всей операции? ты чё, будеш писать херову тучю "catch" блоков, и в каждом из них один и тот же код обработки исключительной ситуации?
            вот это действительно говнокод получется!
            ситуации, когда похер на тип эксепшена хоть и очень редки, но всётаки бывают.
            Ответить
              • вообще стандартная практика - завести свой базовый класс исключения и оборачивать им все, что кидается из публичных методов классов. тогда в главном методе потока вместо
                try { /*do something */ }
                catch { alert("Произошла неведомая ебаная хуйня!"); }
                будет примерно так:
                try { /* do something */ }
                catch (MyCoolException ex) {
                alert("Произошла вот такая хуйня: " + ex.Message);
                //пишем в лог, если опция включена
                } catch (Exception ex) {
                //программист мудак, но мы не хотим чтобы пользователь об этом узнал
                alert("Произошла неведомая хуйня, обратитесь в поддержку.");
                //пишем в лог
                }
                даже если нам не надо сообщать пользователю об ошибке, то ситуация, в которой вылетело что-то кроме MyCoolException является чем-то из ряда вон выходящим и достойна записи в логе 🙂
                Ответить

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

Где здесь C++, guest?!

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


    8