Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2011.10.16;
Скачать: [xml.tar.bz2];

Вниз

Assert   Найти похожие ветки 

 
Scott Storch   (2011-06-29 17:09) [0]

в каких случаях следует использовать 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);


 
Rouse_ ©   (2011-06-29 17:21) [1]

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


 
Dimka Maslov ©   (2011-06-29 18:40) [2]

Поскольку ошибка всегда бывает в 17-той строке, следовательно assert должен быть в 16-той


 
Дмитрий Белькевич   (2011-06-30 09:45) [3]


> Стоит ли ставить assert на проверку параметра - Pack?


А как не лень. По хорошему - то все входные параметры проверять на корректность - как минимум. Можно еще и выходные. Можно и по коду проверок набросать.

В общем - кашу маслом не испортишь.


 
_Юрий   (2011-06-30 22:05) [4]


> Дмитрий Белькевич   (30.06.11 09:45) [3]


Особенно смешно буднет потом, когда внезапно изменятся правила. Разбросанные по коду проверки еще длительное время будут доставлять массу веселых минут горемыкам, сопровождающим проект.


 
_Юрий   (2011-06-30 22:11) [5]


> Scott Storch   (29.06.11 17:09)  


в данном случае смысла в  Assert особо не видно - если придет nil, тут же поднимется AV (на чтении адреса, близкого к нулевому), и ошибка будет выявлена. Assert имеет смысл ставить там, где без него программа пошла бы по ошибочной ветке.


 
George ©   (2011-07-01 18:23) [6]


> Поскольку ошибка всегда бывает в 17-той строке, следовательно
> assert должен быть в 16-той

Если исходить из того, что ошибка всегда в 17-й строке, то и ассерт не надо ставить, надо идти в 17-ю строку и править там ошибку.
Кстати, дурацкий вопрос, но откуда взялся этот мем?



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2011.10.16;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.003 c
15-1308725956
SQLEXPRESS
2011-06-22 10:59
2011.10.16
декомпилировать приложение C#


2-1309050691
Drowsy
2011-06-26 05:11
2011.10.16
Перехват исключения при создании формы.


15-1308584554
alexdn
2011-06-20 19:42
2011.10.16
Хост + ms sql


1-1269120802
olookin
2010-03-21 00:33
2011.10.16
Обновление TChart для показа визуальных Parent-элементов


1-1269019209
DmitriyG.
2010-03-19 20:20
2011.10.16
Изменение DecimalSeparator





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский