December 16th, 2009

glider

Нечеловеческие интерфейсы

Летом я делал визуальный редактор модели данных для простенькой объектной БД. Для того, чтобы не писать свои диаграммы с нуля, я решил воспользоваться услугами VS DSL Tools SDK. Вкратце - это фреймворк, который позволяет хостить диаграммы в студии и редактировать их аля winforms-дизайнер.

Весьма неслабое омерзение у меня вызвала идеология VS SDK - необходимость создания солюшена для редактирования простой схемки, принуждение к использованию докающихся окошек как средства упорядочения экранного пространства и общее чувство заброшенного дома - куча элементов меню достались в наследство от VS Shell и не использовались. Вместо того, чтобы честно признать отстойность этого подхода, я оправдывал его тем, что зато так получается униформно и похоже на студию.

Сегодня пришел час расплаты. Два дня я ваял репорт для динамикс-црма, но сегодня внезапно оказалось, что он не поддерживает формат второго Report Builder (ибо репорт-билдер изначально заточен под сиквел-2008, а Dynamics CRM, включая и последнюю на момент написания версию за номером 4.0, создавался для сиквела-2005; я в курсе, что четвертую версию можно пересадить на 2008й сиквел, но, к несчастью, нашему кастомеру это не подходит). В результате пришлось переделать репорт в BIDS, которая по факту представляет собой VS Shell, заточенный для репортинга.

В роли пользователя я наглядно почувствовал разницу между человеческим и нечеловеческим интерфейсом. 1) Куча лишних файлов вместо одного-единственного rdl, 2) невнятная структуризация компонентов репорта, искусственно подстроенная под структуру солюшена, 3) пачка мешающихся под руками докающихся окошек, которые можно бы смело объединить в несколько более крупных, но не позволяет идеология студийного шелла, 4) необходимость в окошке Properties вместо риббона + системы смартовых контекстных меню репорт-билдера - я могу продолжать дальше, но лучше остановиться. Это все работает для организации большого количества исходников в один проект, но ниразу не работает в общем случае.

Вывод: так же, как и XML лучше не использовать для написания DSL-ей, которыми будут пользоваться живые люди, так и жесткие фреймворки для построения юзер-интерфейса (CAB, Naked objects, VS Shell и так далее) лучше не юзать в целях разработки GUI для хуманов. Как бы ни хотелось это сделать, оправдывая себя простотой разработки, лучше не надо.
glider

Ненужные таски

В последнее время наблюдаю за собой интересную штуку. Если какая-то активити вызывает у меня мерзостное чувство, то она либо оказывается порождена неверным решением проблемы, либо решением бессмысленной проблемы - какой бы верной и нужной эта активити не казалась изначально. Надо больше доверять интуиции.