![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Assert
Scott Storch © (2011-06-29 17:09:00)в каких случаях следует использовать assert? есть, например, public-метод класса TUpdr:
procedure TUpdr.ApplyPack(Pack: TZipForge);
var
Cur: IXMLDOMNode;
Hdr: IXMLDOMDocument;
I: Integer;
begin
Hdr := CoDOMDocument.Create;
GetPackHdr(Pack, Hdr);
with Hdr.documentElement do
for I := 0 to childNodes.length - 1 do
begin
Cur := childNodes[I];
if SameText(Cur.nodeName, FILE_NODE_NAME) or
SameText(Cur.nodeName, FILE_FULL_NODE_NAME) then
ApplyUpdrNode(Cur)
else
ApplyFileNode(Cur);
end;
end;
Стоит ли ставить assert на проверку параметра - Pack?
Assert(Pack <> nil);
George (2011-07-01 18:23:00) [1]
> Поскольку ошибка всегда бывает в 17-той строке, следовательно
> assert должен быть в 16-той
Если исходить из того, что ошибка всегда в 17-й строке, то и ассерт не надо ставить, надо идти в 17-ю строку и править там ошибку.
Кстати, дурацкий вопрос, но откуда взялся этот мем?
_Юрий (2011-06-30 22:11:00) [2]
> Scott Storch (29.06.11 17:09)
в данном случае смысла в Assert особо не видно - если придет nil, тут же поднимется AV (на чтении адреса, близкого к нулевому), и ошибка будет выявлена. Assert имеет смысл ставить там, где без него программа пошла бы по ошибочной ветке.
_Юрий (2011-06-30 22:05:00) [3]
> Дмитрий Белькевич (30.06.11 09:45) [3]
Особенно смешно буднет потом, когда внезапно изменятся правила. Разбросанные по коду проверки еще длительное время будут доставлять массу веселых минут горемыкам, сопровождающим проект.
Дмитрий Белькевич (2011-06-30 09:45:00) [4]
> Стоит ли ставить assert на проверку параметра - Pack?
А как не лень. По хорошему - то все входные параметры проверять на корректность - как минимум. Можно еще и выходные. Можно и по коду проверок набросать.
В общем - кашу маслом не испортишь.
Dimka Maslov (2011-06-29 18:40:00) [5]Поскольку ошибка всегда бывает в 17-той строке, следовательно assert должен быть в 16-той
Rouse_ (2011-06-29 17:21:00) [6]В любых где тебе захочется, это просто один из методов отладки - не более...