Какова стратегия, если утверждение не выполняется

Утверждение используется для проверки выполнения условия (предусловие, постусловие, инварианты) и помощи программистам в поиске дыр на этапе отладки.

Например,

void f(int *p)
{
  assert(p);
  p->do();
}

Мой вопрос: нужны ли нам предположить, что условие не может быть выполнено в режиме выпуска, и обработать случай соответствующим образом?

void f(int *p)
{
  assert(p);

  if (p)
  {
    p->do();
  }
}

В конце концов, утверждение означает, что условие, которое оно проверяет, НИКОГДА не должно быть ложным. Но если, если мы его не проверим, и он выйдет из строя, программа выйдет из строя. Похоже на дилемму. Как вы, ребята, справляетесь с этим?

7
задан Eric Z 29 October 2010 в 07:56
поделиться