Пользовательский интерфейс. Обмен опытом.

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Re: Пользовательский интерфейс. Обмен опытом.

Сообщение AbakAngelSoft » 11.03.2010 13:38:30

dunin писал(а):чтобы "окно2" всегда было поверх главного, а "окно3" всегда поверх главного и "окна2"

Тоже своего рода модальность! А если я, как пользователь, не хочу чтобы мне эти окна перекрывали часть рабочего пространства?

Добавлено спустя 2 минуты 55 секунд:
хотя окошко с инструментами желательно иметь всегда поверх окна приложения. :(
Но при этом в графических редакторах плавающие инструменты раздрают когда закрывают собой изображение или полосы прокрутки - приходится их очень точно позиционировать или утягивать на второй монитор. А что делать тому у кого нет второго монитора?
Аватара пользователя
AbakAngelSoft
постоялец
 
Сообщения: 273
Зарегистрирован: 06.08.2008 19:28:26
Откуда: Краснодар

Re: Пользовательский интерфейс. Обмен опытом.

Сообщение abarit » 17.03.2010 03:02:11

Вставлю свою копеечку...
Нет, такой диалог не нужен! Зачем? Если пользователь нажал Del он на автомате нажмет Ok и все равно расстроиться из-за потерянной информации. Лишний клик мышкой не защитит, а только увеличит раздражение. Надо бережно относиться к информации пользователя - за функции "удалить безвозвратно" надо удалять программистов.

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

Паковать, делать инкрементальные бекапы, разрабытывать новые алгоритмы.

Бекапы... Инкриментные бекапы... Это на каких базах? Базе студентов ВУЗа? Больше примеров адекватных не придумал.
Вы как себе представляете, например, восстановление накладной, на товар, который неделю назад отправлен в экспедицию?
Или восстановить отсчеты датчиков, мммм... Давления, какой то установки, недельной давности. По данным которых уже построены отчеты и приняты управляющие и инженерные меры.

Считаю, удаление очень удачно реализовано в 1С Предприятии(не реклама). Но не всегда подходит. Например, в складских учетных системах, когда товар захвачен помеченной на удаление записью, получается подвисшим, где-то между ментальным полем Земли и записью в БД....

У многих банков целые направления кредитования закрываются из-за убыточности.

Это показывает уровень образованности и развитости наших банкиров. Что такое скоринг и скоринг системы, они явно не знают. Жаль... Жаль, что такие банки еще где-то работают.

А теперь к сути темы.
1. Нужно отталкиваться от того какие функции выполняет приложение, в какой среде работает и т.д. Универсального совета нет.
Что необходимо для одного, возможно не совместимо с другим.
2. По поводу ошибок и вывода оных в модальных формах. Ошибки нужно прежде всего разделить. Есть ошибки кода в программе, есть логические ошибки(например, оператор работает с не актуализированными данными), есть ошибки оператора(которых тоже довольно много)...
К каждому классу ошибок нужно подходить по-своему. Тоже нет универсального рецепта.
Да, ошибки программиста, мало интересны пользователю, так же как и наоборот. Стратегию обработок этих ошибок тоже нужно выбирать под конкретную задачу.
Если вы работаете в конторе под которую и пишите, то и трафик внутрисетевой можно погонять. Если софт распространяется не управляемо, то извините, но не нужно смотреть на сектантов мак-фака из "свободной" пиндосии. Еще очень много людей которые каждый мегабайт считают.(яркий пример, такого убожества - хром, который втихую утаскивает(устаскивал?) невероятное количество трафика).
Если говорить только о локальной обработке ошибок. Я предпочитаю, сообщать модальным окном кратенько, и отдельно вести 2 лога.
1 лог(файловый) - ошибки программиста. Есть для этого и инструменты и возможности. Лог удаляется опционально. Обычно они именуются датами, и при следующем падении если лог старше месяца, удаляем. Если за месяц не обратились вряд ли вообще обратятся.
2 лог(файловый или временные таблицы БД, уровня сессии) - ошибки оператора. Естественно храниться в течении "сессии" работы с приложением. Отображение в удобной и приемлемой для пользователя форме.
3. Отображение данных. В этом отношении, считаю, что каждому студенту, обязательно, нужно вдалбливать архитектуру "документ/вид". Но у нас, к сожалению, в большинстве случаев этого не делается. Или делается на уровне - "я слышал, такое есть. Если интересно, почитайте в интернете". Вот в этом плане MFC(к примеру), намного порядков, вперед, делала VCL(к примеру). А жаль.
В идеале предоставлять пользователю на выбор(не исключающий) несколько вариантов представления данных. И не боятся экспериментировать. Не загонять себя в рамки того, что если данные табличные, то и отображать их нужно таблично. Бред, причем абсолютный.
Особенно это касается вывода каких то агрегированных(если хотите агрегированных данных). К вашим услугам Dashboard'ы, GIS-данные и т.д. Не упирайтесь в естественное представление данных.
4. Очень важный момент - первый запуск приложения. Tip's считаю бредом который мало кто читает, а раздражает невероятно. Но упорно их двигают. Так же раздражает когда при первом запуске выкидывают первым делом окно настроек. Да пользователь даже не понимает о чем идет речь, как он может это настраивать?! Обязательно необходимо, делать какую-то "типовую" первоначальную настройку программы.
5. Сохраняйте настройки пользователя НЕ явно для него, по крайней мере те которые касаются визуальной части программы и которые не приводят к краху приложения(иначе оно не запустится). Естественно, чтобы потом пользователю не пришлось, снова двигать, тыкать и прочее. Ему ТАК удобнее. Он сделал свой выбор. Например, передвинул пользователь столбец в гриде, сохраните. Выбрал сортировку по фамилии, сохраните. Передвинул панельку сверху - вниз, сохраните.
Если действия пользователя привели к краху приложения, и приложение не может подняться, откатывайте настройки на "типовые"(опять же речь идет о программах массового пользователя. Когда пользователь не находится в минуте набора телефонного номера, текста icq и т.д.)
Идеальный случай, сбросить настройки. Показать пользователю, что были такие настройки, и изменение таких то настроек привело к краху. Обычно пользовательских настроек не так много, пользователь подправит и разберется. Но естественно, тут нужно действовать обдуманно. Это не панацея.
6. Справочная система. Основная справка и контекстная справка... Если Вы собираетесь ее писать на отъе@ись, то лучше совсем не пишите. Разочарование пользователя будет куда больше, если он полезет в справку и не найдет искомого, чем когда справки совсем нет. Сейчас интернет все больше приходит в нашу жизнь, если лень писать справку, заводите пользователя на сайт и форум. Может там уже есть и обсуждалось. Если не обсуждалось, то он сможет хотя бы спросить, причем не на форуме - "Умелые домохозяйки", а у разработчиков.
7. Контекстное меню. Не забывайте о нем. Не нужно делать полную копию toolbar'a, но и делать 1 кнопку тоже не стоит. Да есть маньяки клавиатуры которые любят горячие клавиши - флаг в руки. Но сейчас приходят новые поколения пользователей, которые без мышки не мыслят себя. Так вот не обижайте не тех - не других.
Сейчас, возможно скажите, модно, но процветает идеология, что все жизненно важные функции объекта приложения должны быть консолидированы около него. Зайдите на одноклассники, посмотрите как реализованы всплывающие окна. Запустите "Кризис", новый "Wolfenstein", посмотрите как реализованы функции выбора режимов игры(амуниции?). Это действительно УДОБНО. Пользователю, если он работает с самой нижней записью в гриде, не нужно ползти мышкой вверх окна, чтобы посмотреть, например сумму по этому счету. Он нажав правую кнопку тут же получает доступ к ЭТОЙ ЖЕ кнопке...
8. И последнее. Самого главное. Все что написано выше, не нужно использовать, это от лукавого, чтобы запутать Вас)))))))))

Уф... Вот такие краткие соображения на этот счет)))))

PS^ Писал, как и просилось в заголовке из личного опыта. Книгу рекомендуемую в теме, полистал, но соглашусь с теми, кто говорит, что в книге мало интересного. По крайней мере, я для себя ничего не нашел...

С Уважением.
abarit
незнакомец
 
Сообщения: 9
Зарегистрирован: 15.03.2010 20:42:17

Re: Пользовательский интерфейс. Обмен опытом.

Сообщение coyot.rush » 17.03.2010 09:48:19

3. Отображение данных. В этом отношении, считаю, что каждому студенту, обязательно, нужно вдалбливать архитектуру "документ/вид". Но у нас, к сожалению, в большинстве случаев этого не делается. Или делается на уровне - "я слышал, такое есть. Если интересно, почитайте в интернете". Вот в этом плане MFC(к примеру), намного порядков, вперед, делала VCL(к примеру). А жаль.


Раздел 5. Использование архитектуры документ-вид в приложениях MFC
Основные принципы архитектуры документ-вид
Концепция архитектуры документ-вид состоит в отделении хранения и обработки данных приложения от процесса отображения этих данных пользователю. Приложения, построенные на этой архитектуре, обладают более высокой внутренней логикой, их легче поддерживать и модифицировать. Библиотека классов MFC поддерживает создание остова приложения с помощью AppWizard, как использующего архитектуру документ-вид, так и не использующего ее. Тем не менее, в случае разработки достаточно большого приложения использование этой архитектуры предпочтительно.
AppWizard позволяет создавать каркас приложения, построенного на архитектуре документ-вид, как с одним документом, так и со многими документами. Приложение с одним документом может содержать в каждый момент времени только один открытый документ, в случае же многодокументного приложения возможно открытие сразу нескольких документов одновременно. Примером приложения имеющего многодокументный интерфейс является Microsoft Word, примером приложения с одним документом является программа Notepad (блокнот).


Венец творения блокнот :)
Не будем забывать что VCL and MFC only for Windows :!: А LCL Linux,Windows, MacOs .

и ешё
Архитектура "документ/представление" имеет большое значение, так как обеспечивает каркас множеством возможностей для работы с документами приложения. Однако можно работать с MFC, не применяя ее, так как ее использование ведет к определенному падению производительности и увеличению размера приложения.


Не забываем про KOL :D


Особенно это касается вывода каких то агрегированных(если хотите агрегированных данных). К вашим услугам Dashboard'ы, GIS-данные и т.д.


Обычное окно без элементов управления оным

Не упирайтесь в естественное представление данных.


Красиво только в теории


Очень важный момент - первый запуск приложения. Tip's считаю бредом который мало кто читает, а раздражает невероятно. Но упорно их двигают. Так же раздражает когда при первом запуске выкидывают первым делом окно настроек. Да пользователь даже не понимает о чем идет речь, как он может это настраивать?! Обязательно необходимо, делать какую-то "типовую" первоначальную настройку программы.


Работа пользователя Linux и Windows:
Linux: Пользователь бьёться головой об монитор, читает руководство, работает
Windows:Работает, читает руководство, бьётся головой об монитор :D
Аватара пользователя
coyot.rush
постоялец
 
Сообщения: 309
Зарегистрирован: 14.08.2009 08:59:48

Re: Пользовательский интерфейс. Обмен опытом.

Сообщение Climber » 17.03.2010 10:44:10

abarit писал(а):
У многих банков целые направления кредитования закрываются из-за убыточности.

Это показывает уровень образованности и развитости наших банкиров. Что такое скоринг и скоринг системы, они явно не знают. Жаль... Жаль, что такие банки еще где-то работают.
Извините, но других банков у меня для вас нет :roll:
Есть такая поговорка: "Теоретически, между теорией и практикой нет никакой разницы. На практике разница есть."
Я, как человек, видевший банковскую кухню изнутри, могу сказать: нигде этот принцип не проявляется так ярко, как в банке, решившем заняться кредитованием. Скоринг - это конечно хорошо. А вот как это происходит в реальности. 2004 год, кредитование только-только набирает обороты. Как правильно выдавать - никто не знает. Самые интересные схемы еще не придуманы. Розничное кредитование для всех в диковинку. Владелец банка собирает совет директоров и говорит: "Через год мы должны входить в топ 10 банков по размеру кредитного портфеля. Увеличьте выдачу." Сотрудникам ставят план. За выполнение - космический бонус, за невыполнение - ментально-анальное наказание. А теперь посмотрим на филиал этого банка в Урюпинске. До Москвы далеко. Контроля почти нет. АБС - своя филиальская копия, которая раз в сутки обменивается данными с центральной.
Система такая: откат с кредита - 20%, в доле все: директор филиала, айтишник, начальник безопасности, кредитный менеджер... Но цель достигнута: банк в топ-10, 45 филиалов по всей стране, топ-менеджеры получают милионные бонусы, банк уходит за 500 лимонов зелени иностранцам. Проблемы уходят туда же. Скоринг, как видите, бессилен. Я могу еще долго рассказывать про разные схемы и почему все получилось именно так, а не иначе. Просто если вы не в теме, не надо "ляля" про банки. Извиняюсь за оффтоп.

abarit писал(а):А теперь к сути темы.
1. Нужно отталкиваться от того какие функции выполняет приложение, в какой среде работает и т.д.
Дальше можно не продолжать. К теме удобного интерфейса пользователя это не имеет никакого отношения. Если мы говорим об интерфейсе пользователя, то нужно отталкиваться от целей пользователя.
coyot.rush писал(а):есть ошибки оператора(которых тоже довольно много)
Ошибок оператора не существует. Это ошибки проектирования. Если вы заранее знаете, что так делать нельзя, вы просто не даете оператору это сделать. А если даете, то нечего на зеркало пенять. А если не знаете заранее, можно или нет, то как можете утверждать, что это ошибка?
abarit писал(а):Tip's считаю бредом который мало кто читает, а раздражает невероятно.
Ну почему же? У pgAdmin вполне веселые советы попадались, я даже все прочитал сначала, и только потом отключил. Но это, конечно, исключение. Кстати, в World of Warcraft тоже хорошо реализовано: пока идет загрузка новой локации, 20-30 секунд все равно ничего не можешь делать, в это время показывают картинку и на ее фоне очередной совет.
abarit писал(а):Справочная система.
Ничего не могу сказать. Не вспомню ни одного приложения, чья справочная система мне понравилась бы. Больше всего понравилась справка в Delphi.

Добавлено спустя 1 минуту 33 секунды:
abarit писал(а):8. И последнее. Самого главное. Все что написано выше, не нужно использовать, это от лукавого, чтобы запутать Вас)))))))))
Блин. Этот пункт я не заметил :lol:

Добавлено спустя 1 минуту 39 секунд:
От обратного
Climber
постоялец
 
Сообщения: 415
Зарегистрирован: 03.06.2007 20:09:57
Откуда: Москва

Re: Пользовательский интерфейс. Обмен опытом.

Сообщение abarit » 17.03.2010 11:40:24

Дальше можно не продолжать. К теме удобного интерфейса пользователя это не имеет никакого отношения. Если мы говорим об интерфейсе пользователя, то нужно отталкиваться от целей пользователя.

Требования к интерфейсу системы реального времени(система мониторинга состояния реактора электростанции) и к интерфейсу дизайнерского приложения, совершенно разные, не правда ли? Или я что-то не понимаю?
И целей пользователя никто не отрицает. Я писал о том, что нужно еще смотреть, в каких условиях и в каком окружении работает приложение.

Извините, но других банков у меня для вас нет

Поверьте есть, и уже не в одном банке внедряли, и довольно эффективно работает. Это наверное какие то очень особенные банки, не спорю. И далеко не все они в столице.

Ошибок оператора не существует. Это ошибки проектирования. Если вы заранее знаете, что так делать нельзя, вы просто не даете оператору это сделать.

Вы о каких ошибках говорите? О том, что он ввел вместо цифры букву? Это ошибка проектирования.
А вот попытка ввода цены таблеток, больше, чем разрешено законодательством, это уже ошибка оператора. И к проектированию, это никакого отношения не имеет.
abarit
незнакомец
 
Сообщения: 9
Зарегистрирован: 15.03.2010 20:42:17

Re: Пользовательский интерфейс. Обмен опытом.

Сообщение Climber » 17.03.2010 12:14:14

abarit писал(а):
Дальше можно не продолжать. К теме удобного интерфейса пользователя это не имеет никакого отношения. Если мы говорим об интерфейсе пользователя, то нужно отталкиваться от целей пользователя.

Требования к интерфейсу системы реального времени(система мониторинга состояния реактора электростанции) и к интерфейсу дизайнерского приложения, совершенно разные, не правда ли? Или я что-то не понимаю?
М. б. значение слова интерфейс? По сути, требование к интерфейсу одно: пользователю должно быть удобно. Остальное - следствия из этого.

abarit писал(а):
Извините, но других банков у меня для вас нет

Поверьте есть, и уже не в одном банке внедряли, и довольно эффективно работает. Это наверное какие то очень особенные банки, не спорю. И далеко не все они в столице.
Назовите хотя бы один банк из топ-100 по размеру розничного кредитного портфеля, у которого не было проблем с выдачей кредитов за откаты в 2004 - 2007 г. Сильно сомневаюсь, что такие есть.

abarit писал(а):
Ошибок оператора не существует. Это ошибки проектирования. Если вы заранее знаете, что так делать нельзя, вы просто не даете оператору это сделать.
А вот попытка ввода цены таблеток, больше, чем разрешено законодательством, это уже ошибка оператора. И к проектированию, это никакого отношения не имеет.
Дальше следует троекратное "лол". Типичнейшая ошибка проектирования. Что мешает сделать справочник допустимых цен на лекарства и при попытке ввода "излишеств всяких нехороших" прятать от пользователя кнопку "Сохранить" и вывести красными буквами во весь экран "Тебя посодють, а ты не воруй!"? Я скажу что мешает. То самое.
Ведь эти цены существуют в природе? Зачем оператору делать лишнюю работу, листая здоровенный каталог с ценами, когда любая СУБД сделает это за 0.01 с?

Добавлено спустя 3 минуты 53 секунды:
Я уж не говорю о том, что благодаря волшебному слову constraint ограничить цену на лекарство можно на уровне таблицы БД. Но это перебор, конечно.
Climber
постоялец
 
Сообщения: 415
Зарегистрирован: 03.06.2007 20:09:57
Откуда: Москва

Re: Пользовательский интерфейс. Обмен опытом.

Сообщение abarit » 17.03.2010 12:50:05

М. б. значение слова интерфейс? По сути, требование к интерфейсу одно: пользователю должно быть удобно. Остальное - следствия из этого.

Я и не говорил обратного. Прочитайте еще раз 1 пункт моего дилетантского эссе. Там написано, что к разработке нужно подходить осмысленно, относительно того где будет работать программа. Повторюсь, отчасти, что если для аналитика вы можете вырисовывать график и полминуты и минуту и даже 5 минут, то для оператора электростанции, за это время может произойти не поправимое. Ну это все естественно, для примера.

Стоп. У нас видимо разное понимаение "ошибки".
Что мешает сделать справочник допустимых цен на лекарства и при попытке ввода "излишеств всяких нехороших" прятать от пользователя кнопку "Сохранить" и вывести красными буквами во весь экран "Тебя посодють, а ты не воруй!"? Я скажу что мешает. То самое.

Это ВСЕГДА делается. И маскимально допустимая цена подсвечивается, для оператора. ВСЕГДА.
Но извините, не проверять валидность ввода цены, это как раз как вы говорите - троекратное "лол". И если она введена НЕ правильно, то выдавать ошибку, о чем собственно и написано. Только вот красным цветом выписывать - тоже троекратное "лол". Потому что мигающий и пестрящий интерфейс, это по меньшей мере - цыганщина.
Максимум: это затенять(делать недоступной, серой) кнопку ОК, и каким то образом выводить почему оно серое и недоступное. Не пользовался данной стратегией, поэтому не продумывал как лучше выводить сообщение об ошибке :) Но то что прыгающий размер формы(по высоте, например, как делают в Web приложениях), это тоже - троекратное "лол", я уверен)

Я уж не говорю о том, что благодаря волшебному слову constraint ограничить цену на лекарство можно на уровне таблицы БД. Но это перебор, конечно.

Поражаюсь вашей эрудиции.
Но это не перебор, а зачастую острая необходимость. Данные могут приходить из разных источников, и адекватный РБД, никогда не будет безпредельно доверять всем подряд разработчикам. К тому же бизнес-логику все же рекомендуют выносить в БД... Но это тема отдельного большого разговора.

Назовите хотя бы один банк из топ-100 по размеру розничного кредитного портфеля, у которого не было проблем с выдачей кредитов за откаты в 2004 - 2007 г. Сильно сомневаюсь, что такие есть.

1. Не могу понять как это связано с тем, что нужно хотя бы СЕЙЧАС внедрять скоринговые системы.
2. Я не банковский специалист. Я программист. Никогда не следил за ситуацией в банковской сфере, столь глубоко. Поэтому, прошу извинить, на данную тему подискутировать не могу.
Последний раз редактировалось abarit 17.03.2010 13:18:05, всего редактировалось 6 раз(а).
abarit
незнакомец
 
Сообщения: 9
Зарегистрирован: 15.03.2010 20:42:17

Re: Пользовательский интерфейс. Обмен опытом.

Сообщение Padre_Mortius » 17.03.2010 12:56:41

Что мешает сделать справочник допустимых цен на лекарства

Все цены идут по согласованию с руководством. Права на редактирование в данном справочнике в любом случае прийдется дать. В итоге результат данной затеи равен нулю
Зачем оператору делать лишнюю работу, листая здоровенный каталог с ценами

Никто не будет ничего листать. Просто создадут новую запись, даже если она будет повторной
Padre_Mortius
энтузиаст
 
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Re: Пользовательский интерфейс. Обмен опытом.

Сообщение Climber » 17.03.2010 13:09:04

Padre_Mortius писал(а):Все цены идут по согласованию с руководством.
Законодательные ограничения тоже? Не верю. Руководство само заинтересовано в том, чтобы справочник редактировал один человек, а цены вбивал другой, рангом пониже. (В идеале, конечно, цены должны быть выложены на сайте министерства и должен быть API-интерфейс для их автоматической подгрузки, жаль только жить в эту пору прекрасную... :roll: )
Иначе у руководства есть шанс здорово попасть на бабки, потому что цены в базу забьет Вася, с которого ничего не возьмешь по ТК, а пришедшая проверка @#$ть будет главбуха, который несет ответственность вплоть до уголовной. Хотя, конечно, много зависит от численности персонала аптеки и цели работы. Если вся фирма - 5 человек, включая охранника и уборщицу, а руководство не против, чтобы слегка подзавысить цены, пока никто не видит, тогда многое будет неактуально.

Добавлено спустя 3 минуты 6 секунд:
Кстати, такие вещи, которые связаны с законодательством, вообще-то, обычно очень жестко логируются и прописываются в разных инструкциях, тут на самотек вообще ничего нельзя отпускать.
Climber
постоялец
 
Сообщения: 415
Зарегистрирован: 03.06.2007 20:09:57
Откуда: Москва

Re: Пользовательский интерфейс. Обмен опытом.

Сообщение abarit » 17.03.2010 13:22:01

Руководство само заинтересовано в том, чтобы справочник редактировал один человек, а цены вбивал другой, рангом пониже.

Для этого в БД, есть понятие роли, которое все отлично разруливает.

(В идеале, конечно, цены должны быть выложены на сайте министерства и должен быть API-интерфейс для их автоматической подгрузки, жаль только жить в эту пору прекрасную... )

Но тут вопрос в валидности ввода данных, тетек из министрества...
А вообще есть алгоритмы, причем довольно шустрые, определения аномалии в данных по вторичным признакам. Допустим по тренду в ценах закупок. Если мы покупали аспирин, последние 2 года по цене 0.99 руб, 1 руб, 1.1 руб., то врядли государство скажет что его цена 100 рублей или наоборот 10 копеек.... Это не лишает ошибок, но лишает аномальных значений... Но это тоже все никак не относится к пользовательскому интерфейсу)
abarit
незнакомец
 
Сообщения: 9
Зарегистрирован: 15.03.2010 20:42:17

Re: Пользовательский интерфейс. Обмен опытом.

Сообщение dunin » 17.03.2010 14:31:33

abarit писал(а):...
А теперь к сути темы....
...
...Уф... Вот такие краткие соображения на этот счет)))))

Достаточно толковые и правильные соображения. ИМХО.
Аватара пользователя
dunin
энтузиаст
 
Сообщения: 634
Зарегистрирован: 02.05.2007 13:18:11
Откуда: Тољя††и

Пред.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 47

Рейтинг@Mail.ru