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

    +127

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    try
                {
                     this.DBConn.Open();
                }
                catch (Exception)
                {
                    try
                    {
                        this.DBConn.Close();
                        this.DBConn.Open();
                    }
                    catch (Exception ex)
                    {
                        System.Diagnostics.EventLog.WriteEntry("Agent", "Ошибка подключения к базе данных: " + ex.ToString(),
                            System.Diagnostics.EventLogEntryType.Error);
                        return;
                    }
                }

    Поразительная настойчивость

    Запостил: dens, 16 Июня 2011

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

    • Напомнило анекдот про Жигули и состояние дверей: открыто, закрыто и незакрыто.
      Ответить
    • Побочное проявление копипасты?
      Ответить
    • А у меня подобное гоуно было реализовано вот так:
      while(true) {
       try {
       ...
       } catch {
        while(!db.isAlive) {
         db.connect();
         Thread.Sleep(1000);
        }
       }
      }
      Ответить
    • иногда, имхо, когда небольшой код дублируется всего дважды, проще и с меньшим количеством ошибок прокипаписть его, нежели писать более сложный и error-prone branching с циклами...
      Ответить
      • с этого всё говно и начинается, а ну-ка копипастну ...
        upd. хотя могу найти и оправдание: самому приходилось при работе "на коленке" и спешке делать дубли, однако в самом ближайшем будущем они заменялись на адекватный код.
        Ответить
        • да ладно, городить три уровня циклов и двадцать функций просто чтобы повторить один и тот же код в одном месте два раза - глупость.

          вот если код раскидан по разным местам, то другое дело. глаз не видит всю картину и забывает синхронизировать копипасты при изменении одной.

          тут как с goto... goto considered harmful only if you're an idiot
          Ответить
          • > три уровня циклов и двадцать функций просто чтобы повторить один и тот же код
            с этого места поподробнее пожалуйста
            Ответить
    • Хаха. Забавный костыль, на тот случай, если забыли закрыть базу перед открытием.

      Я даже больше скажу, скорее всего её закрыть не забыли, а просто старый объект-обёртка для работы с базой уже не используется, но финализатор ещё не вызвался, а значит база не закрылась. Поэтому перед открытием код пытается зарыть всё ещё открытую базу. :D
      Ответить
    • показать все, что скрытоvanished
      Ответить
    • показать все, что скрытоvanished
      Ответить

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