Архив за Сентябрь, 2006

Каскадное удаление данных. Обработка попытки удаления объекта, на который есть ссылки.

Четверг, Сентябрь 28th, 2006

С точки зрения программиста все просто. Навешиваем констрейны на базу данных. При попытке удаления перехватываем эксепшен и делаем ролбек транзакции.
А пользователь вместо элементарной последовательности:
Вызов меню / попытка нажатия на кнопку удаления. Все приехали, вижу что невозможно.
вынужден идти по длинному пути:
Вызов меню -> отдание команды на удаление -> подтверждение команды.
Расчет времени по GOMS [1] дает 2.4 - 3.6 секунды в первом случае и 8.4 во втором. В случае же Web приложения во втором варианте добавляются еще две задержки приложения 2-6 секунд. А это уже очень серьезно. Одно дело за 2.5 секунды понять, что удаление невозможно и совсем другое в течение 10 - 15 секунд заниматься нудной работой, забыть, что же делать дальше и выяснить, что все это напрасно.
Выдача пользователю информации о блокирующих объектах легко решается. Раз приложение знает, почему нельзя удалять, то этот список уже есть. Значит можно показывать его во всплывающей подсказке.
Пожалуй, еще один довод в пользу плохого интерфейса - это разгрузка сервера. Необходимость считать возможность удаления для всех элементов, даже если пользователь ничего удалять не собирается накладно. Но это обходится введением дополнительного свойства объекта «Есть ли ссылки?». Пропадает информативность? Хорошо, добавим команду «показать список блокирующих элементов»
Как это ни странно, но иногда использование констрейнов приводит к усложнению структуры базы данных.
Итак, все сводится к некоему усложнению кодирования. Что перевесит: удобство программирования или удобство использования? Пока в подавляющем количестве случаев программеры одерживают верх над конечными пользователями.
И это еще одна истина из длинного списка неприятных, поскольку «утаить их - нечестно, сказать же правду - значить, вызвать огонь на себя».

———————————————-
[1] Метод GOMS предложен в 1983г. Этот метод неплохо описан в книге “Дизайн пользовательского интерфейса” Влада Головача.