5/7/05

singalen: (Default)
Джоэл ссылается тут и тут на статью Реймонда Чена, выступающую против исключений. Перечитать со всеми ссылками.
В общем, аргумент насчёт того, что при наличии exceptions отследить глазом все неявные переходы почти невозможно, верен, - если не принимать во внимание инструментальную поддержку.
Java checked exceptions, увы, не имеют аналогов в мейнстриме (как я его вижу; читай - C#, C++). Если рассматривать только код в нотепаде, то да, но - у нас есть IDE и компилятор, который сильно облегчает поиск проблем с checked exceptions. Возможен и компилятор C++, выдающий warnings по образу compile-time ошибок Java с checked exceptions.
С третьей стороны, просто читая код, так-таки не увидишь этих "неявных goto".
Надо посчитать, насколько предупреждения/ошибки компилятора о checked exceptions помогают отличить правильный код от неправильного.

Upd: Добавляю свой старый конспект с нашей локальной тусовки, которую наадеюсь продолжить с осени.

1. Checked vs unchecked exceptions.

Read more... )
singalen: (Default)
Были опробованы: Rational Purify, старая Insure 5.1 (не встраивается в MSVC 7.1, но проверяет его бинарники), BoundsChecker 7.2.
Скачаны, но не опробованы по причине отсутствия доступа: Insure 7.0, AQTime 4.4, HeapAnalyzer 3.1, splint-3.1.1.
Приз зрительских симпатий достался BoundsChecker-у. Он нам поймал:
  • доступ к нелегальным указателям;
  • превращение указателей в нелегальные;
  • доступ к неинициализированной памяти;
  • вызовы функций по нелегальному адресу;
  • нелегальные указатели, переданные параметрами функциям WinAPI и COM;
  • отлично показывал call stack для момента возникновения ошибки И для места, где эта память была выделена.
Сравнения фич не дождётесь :) Не до того, но могу ответить на пару вопросов.