andrzejn: (Default)
[personal profile] andrzejn
Возьмём типичнейшую программу: база данных и пользовательский интерфейс к ней. Каким ошибкам программирования соответствуют классические гештальтистские способы прерывания контакта?

Конфлюэнция. База данных состоит из сотен таблиц с именами вида T001, T002, T003 и так далее. В каждой таблице - десятки полей с именами F01, F02, F03... все поля одного типа - строковые. В них записаны какие-то числа и слова. Связей нет. Определить главные и связанные таблицы невозможно, как выбрать хоть что-то вразумительное - непонятно. До написания программы дело не доходит.

Интроекция. Всякий раз, когда программе нужна пара значений из базы, она делает "SELECT *" без условий, закачивает в себя мегабайты записей, раздувается и медленно их перебирает. Часто ошибается и берёт данные не из той записи, потому что не ожидает, что их там может быть несколько.

Проекция. Программа хранит в базе не только данные, но и свои настройки, описания окон и скрипты бизнес-логики, которые вычитываются и исполняются в клиенте. Любые глюки объясняются фразой: "Опять база поломалась!"

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

Ретрофлексия. Неожиданности в данных программа трактует как критичные ошибки кода. При любом несоответствии падает. Избегает сохранять данные в базу, предпочитая запоминать всё в многочисленных локальных переменных и скрытых полях форм.

Профлексия. Хранимые процедуры составлены по всем правилам программирования - с перехватчиками исключений, протоколированием, множеством подпрограмм и функций, элементами объектного подхода. Это всё довольно сложно в отладке и притормаживает. Код программы при этом слеплен кое-как.

Эготизм. Программа работает безупречно, за исключением одной мелочи: в начале сеанса работы открывает одну большую общую транзакцию (на всякий случай, чтобы всё было максимально надёжно и безопасно), а при завершении не подтверждает эту транзакцию, а откатывает. Никаких следов работы в базе не остаётся.

Profile

andrzejn: (Default)
Андрій Новосьолов

June 2025

M T W T F S S
      1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 2829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Saturday, 28 June 2025 18:00
Powered by Dreamwidth Studios