none
Отлов внутренних исключений в продакшн-проекте RRS feed

  • Вопрос

  • Здравствуйте, у меня немного "религиозный" вопрос: 
    Скажем у нас есть библиотека с внешними и внутренними классами. Последние созданы лишь для удобства и абстракции. Используете ли вы отлов невалидных данных внутри внутренних классов? 
    То есть, например, нам надо найти индекс какого-то элемента. Предположим по каким-то причинам мы создали класс-оболочку Index, мы можем в этом случае пойти 2 путями:
    1)
    class Index
    {
     //...
     public int Value
     {
      set
      {
        if (value < 0)
        {
            throw new ArgumentOutOfRangeException();
        }
        //...
      }
     }
     private _value;
    }

    2)
    class Index
    {
     //...
     public int Value
     {
      set
      {
        Debug.Assert(value >= 0);
        //...
      }
     }
     private _value;
    }

    То есть во 2 случае мы оставляем проверку на валидность данных, которые всегда должны быть валидны(так как только наш, "проверенный" код использует этот класс).
    Соответственно у обоих путей есть свои плюсы и минусы:
    1) Мы получим нормальное сообщение об ошибке, если действительно будет косяк в нашем коде во время уже работающего проекта, но взамен мы потеряем в производительности.
    2) Выигрыш в производительности, но если ошибка будет, то в релизе она может всплыть непонятно где.

    Соответственно вопрос: какой способ наиболее приемлем, условно, в среднем случае?
    3 января 2014 г. 18:29

Ответы