Стоит ли опираться на эту концепцию при разработке новых приложений? Пришло ли что-то на смену или это уже вчерашний день? Или для каких-то задач это подходит?
Преспектив у MDI совершенно нет никаких. Недостатков столько, что не хочется даже перечислять. Но перечислю:
1. Модель MDI предполагает использование большого количества окон, которые атомизируют выполнение задач на кучу несвязанных элементов. Пользователям приходится заучивать тропы (которые не видны невооруженным взглядом) в лесу окон.
2. В таком множестве окон легко запутаться и трудно найти нужное. Присочки типа собственной панели запущенных окон (как панель задач Windows) помогают но немного.
3. Сама модель становится маргинальной и новым пользователям не знакома.
4. В MDI, как правило, можно открыть несколько окон с одинаковым содержимым да еще из разных мест, что еще более запутывает пользователя.
5. Наличие модальных окон усугубляет ситуацию.
6. Легкость создания разработчиком окон приводит к тому, что разработчики злоупотребляют этим. По сути приложения становятся браузерами базы даннных -- из всех щелей торчит модель реализации программы.
Перечисленного хватит, что бы забыть об MDI как о страшном сне.
Здравствуйте, copylove, Вы писали:
C>Преспектив у MDI совершенно нет никаких. Недостатков столько, что не хочется даже перечислять. Но перечислю: C>... C>Перечисленного хватит, что бы забыть об MDI как о страшном сне.
А что тогда по вашему мнению? SDI?
Так что, Firefox и Opera идут неправильным курсом? Или несколько SDI окон, разбросанных среди окон остальных приложений, становятся легко-управляемыми (видимо поэтому вводятся примочки для группировки таких окон). Думаю более корректен будет совет выбирать MDI крайне аккуратно, учитывая его недостатки, имея в виду, что плохих применений MDI в современном софте значительно больше, чем хороших.
Здравствуйте, SEDEGOFF, Вы писали:
SED>А что тогда по вашему мнению? SDI?
Лично мне больше нравится то, что в MFC называется explorer-like style. Т.е. слева список или чаще дерево окон, справа — само окно. Между ними сплиттер. Можно еще усложнить — справо не одно окно, а все открытые окна на табе. В общем, как в Visual Studio или Delphi.
Здравствуйте, Mamut, Вы писали:
А>>Так что, Firefox и Opera идут неправильным курсом?
M>В Firefox ограничили MDI тем, что запретили ресайзить табы — это "вечно развернутый" MDI. Что, в принципе, удобно
А в Опере — нет. Другое дело что мало кто (может быть) пользуется не развернутыми на макс. окнами (табами). Но все равно МДИ — оно и в Африке МДИ.
Вопрос to MDI or not to MDI (именно так был поставлен) ведь не однозначен. Все от задачи зависит и от того каким образом вы ее решать наметили. Не считаю что стоит МДИ со счетов сбрасывать (как пример опять же Опера) но как уже сказали — употреблять осторожно и грамотно.
Здравствуйте, Аноним, Вы писали:
А>Стоит ли опираться на эту концепцию при разработке новых приложений? Пришло ли что-то на смену или это уже вчерашний день? Или для каких-то задач это подходит?
А что такое MDI (multi document interface)?
Я так понимаю это тип проекта в VS, я правильно понял?
Здравствуйте, copylove, Вы писали:
C>Преспектив у MDI совершенно нет никаких. Недостатков столько, что не хочется даже перечислять.
+1
C>1. Модель MDI предполагает использование большого количества окон, которые атомизируют выполнение задач на кучу несвязанных элементов. Пользователям приходится заучивать тропы (которые не видны невооруженным взглядом) в лесу окон. C>2. В таком множестве окон легко запутаться и трудно найти нужное. Присочки типа собственной панели запущенных окон (как панель задач Windows) помогают но немного.
Помогают, еще как в частности, в подобной приписочке мне понадобилась примерно минут 20 на то, чтобы наверху было лишь последнее открытое окно, без возможности перейти к стальным. а при "переключении задачи" на своем таскбаре все окна, связанные с другими задачами сворачиваются и не мешают работать
C>3. Сама модель становится маргинальной и новым пользователям не знакома. C>4. В MDI, как правило, можно открыть несколько окон с одинаковым содержимым да еще из разных мест, что еще более запутывает пользователя. C>5. Наличие модальных окон усугубляет ситуацию. C>6. Легкость создания разработчиком окон приводит к тому, что разработчики злоупотребляют этим. По сути приложения становятся браузерами базы даннных -- из всех щелей торчит модель реализации программы.
C>Перечисленного хватит, что бы забыть об MDI как о страшном сне.
супер!
Здравствуйте, copylove, Вы писали:
C>Преспектив у MDI совершенно нет никаких. Недостатков столько, что не хочется даже перечислять. Но перечислю: C>1. Модель MDI предполагает использование большого количества окон, которые атомизируют выполнение задач на кучу несвязанных элементов. Пользователям приходится заучивать тропы (которые не видны невооруженным взглядом) в лесу окон.
Это если предметная область сильно связанная.
А если она рассыпается на множество слабо связанных (но, тем не менее, связанных) объектов — например, файлы в проекте или страницы в интернете — то это большой плюс.
C>2. В таком множестве окон легко запутаться и трудно найти нужное. Присочки типа собственной панели запущенных окон (как панель задач Windows) помогают но немного.
Виндовской панели задач сильно не хватает иерархичности — чтобы группировать окна по функциям.
Ибо человек обычно не может жить в модальном режиме "у меня мысль, и я её думаю". Переключился с ворда на браузер, а потом прыгай Alt-Tab-ом по списку открытых вордовских окон (в перемешку с окнами браузера, папками эксплорера и т.д.). Ай как весело.
Одно из решений — создание множества десктопов. В линуксе эта функция штатная, в виндах есть всякие надстройки над эксплорером и нестандартные менеджеры окон.
Да что уж говорить: любимцы публики Orthodoxal File Managers — такие как FAR и TC — это многодокументные (ровно двухдокументные) приложения
А Dos Navigator — вообще был честным MDI.
C>3. Сама модель становится маргинальной и новым пользователям не знакома.
Их не так уж и много, этих моделей. Самая популярная — это закладки.
Виндовский таскбар — частный случай.
C>4. В MDI, как правило, можно открыть несколько окон с одинаковым содержимым да еще из разных мест, что еще более запутывает пользователя.
Это опять же, если ты имеешь в виду "много видов одного документа". Сколько таких приложений (не писанных васей-пупкиным) ты знаешь?
Обычно же один документ — одно окно.
C>5. Наличие модальных окон усугубляет ситуацию.
Ту хум хау.
Пример: открыта студия MSVC, я из VSS забрал свежие изменения. Студия начинает полоскать мне мозги "Файл изменён внешней программой. Обновить?", "Свойства проекта поменялись. Перегрузить?" — и так до тех пор, пока не отработает всё.
Конечно, здесь сильно не хватает кнопки "Yes to all", ну это прокол конкретно студии.
А теперь представьте, что вместо MDI у меня открыта россыпь редакторов. И каждый из них начинает меня спрашивать.
Это значит, я буду по всей оконной системе бегать и тыкать в диалоги. Наверняка, чего-нибудь забуду — ну это ещё ладно. Однако про Yes to all можно даже не мечтать!
C>6. Легкость создания разработчиком окон приводит к тому, что разработчики злоупотребляют этим. По сути приложения становятся браузерами базы даннных -- из всех щелей торчит модель реализации программы.
Васю Пупкина давайте не будем брать в расчёт. Он и из SDI, и из чего угодно сделает одно большое misuse.
C>Перечисленного хватит, что бы забыть об MDI как о страшном сне.
Как о страшном сне можно забыть, например, Delphi 1. Эта штука, будучи по смыслу MDI-приложением (естественно: в проекте много файлов) валила окна редакторов на десктоп. И потом педалишь Alt-Tab, чтобы пооткрывать неосторожно свёрнутые окошки.
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Здравствуйте, SEDEGOFF, Вы писали:
SED>>А что тогда по вашему мнению? SDI?
PD>Лично мне больше нравится то, что в MFC называется explorer-like style. Т.е. слева список или чаще дерево окон, справа — само окно. Между ними сплиттер. Можно еще усложнить — справо не одно окно, а все открытые окна на табе. В общем, как в Visual Studio или Delphi.
А чем отличается от МДИ? только тем что минимизировавать/восстанавливать нельзя и все. Один черт оконо много и запутаться в них трививалльно как и в МДИ.
При грамотном дизайне ПО в МДИ пользователь не путается, пока не начинает избретать велосипед.
Здравствуйте, Аноним, Вы писали:
А>Стоит ли опираться на эту концепцию при разработке новых приложений? Пришло ли что-то на смену или это уже вчерашний день? Или для каких-то задач это подходит?
Ничего на 100% смену еще не пришло. Можешь конечно чтобы не плодить лишние окно (что есть плохо — путает юзверя) делать вся аля Wizard. Установка ПО тому пример. Очень удобно. Тогда МДИ+Визарды = одитн/много Визардов сразу + другие формы (отчеты (уже построенные) например, справочники и т.д., где мастера наик не нужны), что ИМХО удобно и необходимо.
1) Tabbed SDI. Например Opera
2) Multiple Threads SDI. Например IE 6.
На самом деле вышеприведенное имеет смысл
(как и сам MDI) когда приложение работает (загружает,представляет)
однотипные документы.
Если же приложение показывает несколько view одного и того же документа
то management этих самых view — другая песня.
Например WYSIWYG/SourceCode виды одного документа не имеет смысла разносить
в MDI — это уже опять же либо локальный tabbed view либо splitted view но в одном окне.
Здравствуйте, c-smile, Вы писали:
CS>Если же приложение показывает несколько view одного и того же документа CS>то management этих самых view — другая песня.
CS>Например WYSIWYG/SourceCode виды одного документа не имеет смысла разносить CS>в MDI — это уже опять же либо локальный tabbed view либо splitted view но в одном окне.
У IDE VC6 есть замечательный плагин — WndTabs. Он позволяет группировать закладки, относящиеся к родственным видам (критерий родства прост: у файлов одинаковое имя; поскольку очень велика вероятность, что hello.h и hello.cpp — это две половинки одной единицы компиляции).
Здравствуйте, c-smile, Вы писали:
А>>Стоит ли опираться на эту концепцию при разработке новых приложений? Пришло ли что-то на смену или это уже вчерашний день? Или для каких-то задач это подходит?
CS>А что такое MDI (multi document interface)?
Здравствуйте, Кодт, Вы писали:
CS>>Например WYSIWYG/SourceCode виды одного документа не имеет смысла разносить CS>>в MDI — это уже опять же либо локальный tabbed view либо splitted view но в одном окне.
К>У IDE VC6 есть замечательный плагин — WndTabs. Он позволяет группировать закладки, относящиеся к родственным видам (критерий родства прост: у файлов одинаковое имя; поскольку очень велика вероятность, что hello.h и hello.cpp — это две половинки одной единицы компиляции).
К>Получаем компромисс между одноуровневой системой закладок и иерархически устроенной. К>(http://www.wndtabs.com/wt/tour/tab_advanced.asp)
Да, действительно удобно.
Опять же касательно MDI и VS6 — там как раз MDI. Честно говоря не помню чтобы я когда использовал
несколько видимых окон одновременно. Может оно конечно у меня руки не так стоят...
Там еще кстати редактор в splitted view. Ни разу не пришлось тоже насладиться.
Единственное приложение куда splitted view вписывается и имхо нужен это Excel.
Здравствуйте, Аноним, Вы писали:
А>Стоит ли опираться на эту концепцию при разработке новых приложений? Пришло ли что-то на смену или это уже вчерашний день? Или для каких-то задач это подходит?
На самом деле все дело в подходе...
Например я не отказался от MDI, Я просто сделал:
1. Ограничил появление новых окон. Если пользователь нажимает пункт "Справочник Клиенты" и если такое окно уже есть на экране, то он просто всплывает/восстанавливается.
2. Свой навигатор по окнам
Здравствуйте, c-smile, Вы писали:
CS>Опять же касательно MDI и VS6 — там как раз MDI. Честно говоря не помню чтобы я когда использовал CS>несколько видимых окон одновременно. Может оно конечно у меня руки не так стоят...
Было бы два монитора — можно было бы. А так — места маловато.
CS>Там еще кстати редактор в splitted view. Ни разу не пришлось тоже насладиться.
Редко когда, но нужен. Например, при рефакторинге. В одной половинке — растерзываемая функция, в другой — место, куда переносятся куски кода.
Хотя опять же, встаёт вопрос размера. Обычно проще поставить две закладки и прыгать между ними по F2.