metaclass: (Default)
[personal profile] metaclass
Нет ничего полезнее массово встроенных в программу средств диагностики.
В обработчик исключений в программе встроена запись информации о исключении в базу данных (если исключение не касается пропадания соединения с базой, конечно).
Благодаря этому исправил уже штук 5 глюков, в основном связанных с тонкими эффектами, зависящими от последовательности действий пользователей, которые без упорного распланированного многодневного тестирования после разработки фиг найдешь.
Дельфи, конечно, туповат в плане информации об исключениях - без сторонних компонентов, работающих неизвестно как, информации о месте, где произошло исключение, не получишь. А компоненты эти заставляют извращать параметры компиляции, и если в них ошибится - запросто способны начать выдавать такие исключения, что исходные покажутся мелочью. Раскрутка фреймов стека при их отсутствии, например. Или разное поведение при компиляции с пакетами или без.
Но для поиска достаточно адреса, по которому произошла ошибка - заглянуть по нему дизассемблером и почти всегда сразу видно, в чем проблема.

А еще одна вещь, по поводу которой я всегда спорю с [livejournal.com profile] belnetmon - это использование собственных исключений. Во всех своих функциях, на вход которых подаются параметры извне, я все параметры проверяю на валидность - индексы на попадание в диапазон, ссылки на объекты на неравенство nil, при поиске в ассоциативных массивах - наличие ключа в массиве и выкидываю собственное исключение если чего-то не так. В исключение помещается имя класса и метода, где оно произошло, имя и значение параметра вызвавшего ошибку, итд.
Когда в программе 65000 строк кода, написанного за два года, чего-нибудь не сломать при доработке можно, только пользуясь такими методами.

Вот еще бы все тоже самое сделать на сервере баз данных. Но при всем удобстве тамошних языков, они убогие и там хотя бы нужную функциональность написать и заставить работать. Посему весь серверный код надо выкинуть, то бишь перенести на сервер приложений. Заодно от зависимости от вида сервера избавиться можно будет.

Date: 2006-11-20 11:33 am (UTC)
From: [identity profile] yurri.livejournal.com
Nil? Здесь пахнет паскалем!

Date: 2006-11-20 11:35 am (UTC)
From: [identity profile] metaclass.livejournal.com
Это и есть Delphi, я ж написал :)

Date: 2006-11-20 12:43 pm (UTC)
From: [identity profile] slonopotamus.livejournal.com
Нам бы (явщикам) ващи проблемы :)

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Aug. 14th, 2025 10:47 am
Powered by Dreamwidth Studios