Андрій Новосьолов (andrzejn) wrote,
Андрій Новосьолов
andrzejn

Category:

Нарушение функции SELECT

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

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

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

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

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

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

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

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

[ DW ]
Tags: гештальт для программистов
Subscribe

  • Новые модельки

    Одно влечёт за собой другое. Повесил на стены новые часы – убрал на кухню с подоконника старые – на подоконнике стало пустовато – добавил к…

  • Начинаю преподавать гештальт

    Ну что ж, пришло время для очередного шага в профессии. Мы с Ольгой Ивачевской открываем набор в базовую учебную группу "Основы гештальт-терапии,…

  • Счастье

    Cчастье = комфортное физическое состояние (выспался, сыт, ничего сейчас не болит и не мешает) + комфортное эмоциональное состояние (ничего сейчас не…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 6 comments