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

    +135.2

    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
    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
    protected void DuplicateFilterNameValidator(object source, ServerValidateEventArgs args)
        {
            string _filterName = FilterName.Text;
            SqlCommand command = new SqlCommand();
            SqlDataReader filterNameReader = null;
            try
            {
                SqlConnection connection = new SqlConnection(strConn);
                connection.Open();
                command.CommandText = "EventNotificationFilterSelectByName";
                command.Connection = connection;
                command.CommandType = CommandType.StoredProcedure;
                command.Parameters.Add(new SqlParameter("@filterName", _filterName));
                filterNameReader = command.ExecuteReader();
    
                if (filterNameReader.HasRows)
                {
                    args.IsValid = false;
                }
    
                if ((connection != null) & (connection.State == ConnectionState.Open))
                {
                    connection.Close();
                }
            }
            catch (Exception e)
            {
                _log.Error(e);
            }
    
        }

    omg...

    Запостил: Sharp, 05 Февраля 2010

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

    • проверка (connection != null) & (connection.State == ConnectionState.Open) доставляет
      Ответить
      • что именно доставило? & - обычная опечатка. В остальном все верно
        Ответить
        • если прога дошла до этого места, то connection по любому не null, оно бы сфейлилось еще на connection.open. и при закрытии соединения совсем не обязательно проверять, открыто ли оно
          Ответить
        • (connection != null) & (connection.State == ConnectionState.Open)
          Порядок сравнения не известен. Например connection == null, тк (connection != null) ещё не проверялась, а (connection.State == ConnectionState.Open) - уже пытаеться обращаться к не существующему классу. connection
          Ответить
          • >>Порядок сравнения не известен.

            ты это разработчикам расскажи, а то они и не знают, что в шарпе частичные вычисления и порядок строго слева-направо
            Ответить
            • если использовать &, то вычисляются оба выражения :)
              Ответить
            • Даже в плюсах на ms и gcc в этом случае порядок абсолютно четкий. +
              Ответить
      • Кстати, не далее, чем вчера, у нас в проекте такое же обнаружил:)
        Ответить
    • Единственна говнистость - если случится ошибка в сторед процедуре, то конекшн не закроется
      Ответить
    • да, закрытие надо в finaly полюбому
      Ответить

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