Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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]

В любых где тебе захочется, это просто один из методов отладки - не более...


Наверх

Титульная страница Поиск, карта сайта Написать письмо