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

Category:

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

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

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

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

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

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

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

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

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

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

  • Агрессивное самоограничение

    Об ограничениях, часть вторая. Еще полвека назад гуманисты-романтики рассуждали о неограниченном потенциале человека. Вот ещ' немного, мы уберём…

  • Ограниченность ограниченности

    Думаю о том, что в нынешние времена изобилия и разнообразия всё больше сфер жизни, которые прежде регулировались естественными ограничениями, теперь…

  • Внимание

    Что такое внимание? (Рядом с ним ещё лежат термины "фокус внимания", "осознавание" и "сознание"). Интуитивно это всем понятно, но достаточно…

  • 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