Re[13]: Необходимость ASSERT
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 19.10.05 12:08
Оценка: +1 -2
Здравствуйте, Sinclair, Вы писали:

S>В тех местах, где мы не можем гарантировать корректных параметров, вместо ассерта надо писать логику обработки. Примерно так:

S>
S>int RegisterUser(char * szFirstName, char* szLastName)
S>{
S>  ASSERT(szFirstName != NULL); // внещний код обязан передать нам валидный поинтер!
S>  ASSERT(szLastName != NULL);
S>    if(strlen(szLastName) == 0) // а вот тут уже пользовательский ввод
S>    {
S>      return -1; // возвращаем код ошибки, чтобы вызывающий код мог отразить это в интерфейсе
S>    }
S>    return SaveToDb(szFirstName, szLastName);
S>}
S>


Имхо, самая большая проблема ASSERT-ов это то, что они выбрасываются из production кода. Абыдна бывает получать в production ошибку в функции RegisterUser (или даже в дебрях SaveToDb) из-за того, что где-то выше один из szFirstName, szLastName получился нулевым. Благодоря ASSERT-ам мы теряем возможность быстро продиагностировать проблему.

А отладить все невозможно. Поэтому и в production системах баги, к сожалению, есть.
... << RSDN@Home 1.1.4 stable rev. 510>>


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.