зачем использовать «assert» в проекте?(и зачем использовать его так много раз) - PullRequest
6 голосов
/ 06 октября 2011

Я читал образец кода ListAdder, и сразу после переменной есть много утверждений, или они использовались почти в каждом методе, например:

self.formatter = [[[NSNumberFormatter alloc] init] autorelease]; assert(self.formatter != nil);

или:

- (UITableViewCell *)tableView:(UITableView *)tv cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
   #pragma unused(tv)
   #pragma unused(indexPath)
   UITableViewCell *    cell;

   assert(tv == self.tableView);
   assert(indexPath != NULL);
   assert(indexPath.section < kListAdderSectionIndexCount);
   assert(indexPath.row < ((indexPath.section == kListAdderSectionIndexNumbers) ? [self.numbers count] : 1));

Мне было интересно, какой смысл это делать?

Спасибо

Ответы [ 3 ]

5 голосов
2 голосов
/ 06 октября 2011

Утверждения проверяют предположения программиста о том, как будет вызываться код. Если предположения ошибочны, утверждение не выполнится и выдаст исключение. Это приводит к сбою кода как можно раньше.

Является ли это делать или нет, является предметом споров. Это может быть слишком далеко.

2 голосов
/ 06 октября 2011

Смысл утверждений заключается в том, чтобы убедиться, что ошибки обнаруживаются немедленно и легко диагностируемым образом, а не в виде легкого неправильного поведения в дальнейшем.В этом случае разработчик этого кода хочет гарантировать выполнение 4 условий после выполнения кода.

...