вторник, 14 декабря 2010 г.

Боженька, убей всех плохих программистов. Выпуск #2.

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

Начинаю ненавидеть ignore-errors с той же степенью, что и malloc'и в Сях. Видишь grep'ом десятки-сотни ignore-errors или malloc в проекте - жди беды.

Товарищи программисты, пожалуйста, если вам кажется, что в вашем лиспокоде вот тут можно проигнорировать ошибку, то наваяйте макрос-обёртку, аналогичный ignore-errors, который сам суть обёртка над handler-case, но выводит warning. Этого достаточно, чтобы пользователю вашего кода вовремя заметить ошибку и начать копать её предметно, а не предварительно втыкать несколько часов в монитор со знаком вопроса в глазах, терзаясь смутными сомнения и не решаясь лезть в болото.

А теперь о погоде: в Бостоне тепло. Т.е. холодно, но воздух сухой, поэтому тепло. Сегодня немножко порывался снег идти, но позорно ретировался. Так и стоит погода позднего сибирского октября, когда вот-вот снег выпасть должен.

Кстати, о Сибири... Через два дня сажусь на свой кожанный диван с подогревом и запахом цветочков (Volvo V70 который), еду в Нью-Йорк, откуда летит мой самолёт. Заработался совсем, пора в отпуск! В отпуск, в Сибирь! :)

4 комментария:

  1. Для отлова таких ситуаций (error, которая ignored) может помочь (setf *break-on-signals* 'error)

    ОтветитьУдалить
  2. ignore-errors все же имеет смысл использовать в некоторых местах.

    Я вот пример не так давно описывал - как найти процесс в винде средствами winapi:
    http://love5an.wordpress.com/2010/11/14/intro/
    у меня в doors коды ошибок винды отображаются в conditions лиспа, соответственно, ошибка отказа в доступе при попытке OpenProcess - тоже. Но, заранее сказать нельзя, где она вылезет; при том, что нам надо просмотреть все процессы в системе.

    ОтветитьУдалить
  3. > *break-on-signals*

    Век живи, век учись. Спасибо.

    ОтветитьУдалить
  4. А почему не любишь маллоки?

    ОтветитьУдалить

Архив блога