ГУЙ!

Nov. 26th, 2008 11:37 am
dervish_candela: (Default)
[personal profile] dervish_candela
Почему я принципиальный противник написания GUI-кода руками? Да потому, что это идиотизм: это сущностно противоречит самой идее гуя как такового. Все знают, насколько отвратительной порой бывает такая отвратительная каша GUI-кода и функционального кода, особенно когда возникает необходимость вычленить функциональный код из приложения на какой-нибудь древней платформе. Но! В системах RAD, оборудованных автоматической генерацией гуи-кода типа Дельфи/Билдер этот недостаток хотя бы консистентен (аналоги мне неизвестны, и не уверен, насколько нынче зелена трава на майкрософтовской лужайке). Код гуя генерируют роботы, а мы им просто поклоняемся. То есть знаем типичные недостатки, где их искать и как их лечить. Когда же код гуя пишет вручную человек на том же gtk, результат в каждом конкретном случае непредсказуем. Фактически, ничего не изменилось со времён печально знаменитой закусочной Steve Balmer's MFC's - я не вижу никаких качественных отличий кодинга на тех же ГТК или Qt. Только количественные: на порядок меньше гемора, -//- проще, -//- красивее, -//- функциональнее.

Date: 2008-11-26 11:49 am (UTC)
From: [identity profile] amarao-san.livejournal.com
ГУЙ вообще не должен ПИСАТЬСЯ. Он должен формироваться из описания ТЗ (какие логические элементы в каких соотношениях должны быть на экране) и существующих настроек графической среды (цвета, шрифты, оформление, разрешение и т.д.).

Date: 2008-11-26 12:00 pm (UTC)
From: [identity profile] dervish-candela.livejournal.com
да, это называется design by contract. И, к сожалению, применительно к гую я ничего похожего не видел. Хотя кое-какая зачаточная реализация идеологии уже есть в тех же qt/gtk, как например layout manager - нечто, описывающее расположение твоих элементов гуя вместо императивного задания их полложения. Но даже это не сильно облегчает ситуацию. Гуй - это ведь не только собственно интерфейс. это проблема упомянутого мною размазывания функционального кода по процедуркам-событиям, и гуй-специфичных включений (спрятали/показали кнопку, заполнили список) по функциональному коду. Чтобы решить эту проблему, нужен принципиально новый подход. Кроме design by cintract, нужна расово полноценная RAD, переводящая человеский язык в этот самый контракт, и функциональная (as in functional programming) реализация работы с гуём.

Date: 2008-11-27 04:25 pm (UTC)
From: [identity profile] niemda.livejournal.com
XAML или как оно там называется у Microsoft, что гуй из xml делает. Windows Presentation Foundation которая.

В идеале -- xml описание элементов, пропущенное через "схему" настроек пользователя -> интерфейс.

Date: 2008-11-27 05:10 pm (UTC)
From: [identity profile] dervish-candela.livejournal.com
точно такая же фигня в qt, то же, как я понял, есть для gtk. Но это всё полумеры. Это никак не избавляет от проблемы микроменеджмента интерфейса в коде и результирующей смеси функционального кода с интерфейсным. Плюс ещё этот XML добавляет лишний слой нечеловекочитаемости.

Date: 2008-11-27 06:19 pm (UTC)
From: [identity profile] niemda.livejournal.com
Тут уже проектировать правильно надо. Отделять "бизнес-логику" от микроменеджмента. Интерфейс -- это фасад. А фасады можно и нужно менять.

.NET в этом отношении (кроме WPF) тоже не двигается, там всё кодом выражается (даже понятие ресурсов почти извели). В первом приближении -- возможно правильно сделали.

April 2017

S M T W T F S
       1
234 5678
9101112131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Apr. 5th, 2026 08:28 pm
Powered by Dreamwidth Studios