Почему модальные диалоговые окна являются злыми? [закрытый]

Технически вы можете объединить Reflection и Linq в нечто подобное:

  Object obj = ...

  // All Empty (false or null) public properties of either string or bool type
  PropertyInfo[] emptyProps = obj
    .GetType()
    .GetProperties(BindingFlags.Instance | BindingFlags.Public)
    .Where(prop => prop.CanRead) // you may want to check prop.CanWrite as well
    .Where(prop => prop.PropertyType == typeof(bool) || 
                   prop.PropertyType == typeof(string))
    .Where(prop => object.Equals(prop.GetValue(obj), 
                                 prop.PropertyType.IsValueType 
                                   ? Activator.CreateInstance(prop.PropertyType) 
                                   : null))
    .ToArray();

Однако I сомневается , если вы должны это сделать: некоторые свойства не должны сохраняться :

   // Should be saved
   public string FirstName {...} 
   // Should be saved
   public string SecondName {...} 
   // Should NOT be saved
   public string Name {get {return $"{FirstName} {SecondName}";}}

Вы можете иметь разработанные критерии , какие данные следует сохранить, например в случае FirstName вы можете проверить (по крайней мере!) [/ ​​g8]

   // FirstName must be not null, not empty and not blank
   bool shouldSave = !string.IsNullOrWhiteSpace(FirstName);

Вот почему я предлагаю реализовать [класс g5] пользовательского свойства / method в классе:

   public class MyClass {
     ...
     // virtual: you may want to add some properties in a derived class 
     public virtual bool IsEmpty {
       get {
         return string.IsNullOrWhiteSpace(FirstName) &&
                string.IsNullOrWhiteSpace(SecondName) &&
                ...
       }
     } 
   }
39
задан Community 23 May 2017 в 11:47
поделиться

11 ответов

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

А модификация al диалоговое окно является тем, которое помещает программу в определенное режим и не позволяет Вам делать что-либо, что не соответствует тому режиму, в то время как это открыто. В наиболее распространенной реализации это означает, что Вы не можете получить доступ ни к каким другим окнам.

Это является злым.

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

  • , Если, "добавляют человек" диалоговое окно, немодально, можно зеркально отразить назад и вперед между старой записью и новым копированием и вставкой данных.
  • , Если, "добавляют человек" диалоговое окно, модально, Вы ничего не можете сделать со старой записью, в то время как добавить диалоговое окно открыто. Можно выбрать что-то для копирования, прежде чем выбор "добавит", но всего одна вещь. Все остальное должно быть вручную перепечатано.

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

63
ответ дан Dave Sherohman 27 November 2019 в 02:01
поделиться

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

Они прерывают пользователя, они препятствуют тому, чтобы пользователь делал другие вещи.

, Что, если Вы хотели скопировать и вставить что-то от главного окна? Что, если Вы хотели скопировать сообщение в модальном диалоговом окне? Что, если Вы не заботитесь .

Просто выдерживают сравнение, диалоговое окно Находки IE по сравнению с Firefox

Сравнивают IE, "Вы хотите, чтобы мы помнили этот пароль за Вас?" к Firefox

35
ответ дан Pyrolistical 27 November 2019 в 02:01
поделиться

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

18
ответ дан Mark Stock 27 November 2019 в 02:01
поделиться

Лучшие UIs модальны. Как хуже.

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

А немодальный UI является полным набором инструментов. Некоторые относятся к заданию под рукой, некоторые не. У пользователя должен быть достаточный навык и чтобы выбрать корректные инструменты и применить их корректным способом. В то время как немодальный UI никогда не может поэтому быть столь же оптимальным как хороший модальный UI (правильный инструмент для текущей задачи уже в руке), это никогда не может также быть столь же субоптимальным как плохой модальный UI (неправильный инструмент для текущей задачи, врезающейся в Ваши небрежные пальцы).

Разработка хорошего модального UI может быть жестоко трудной задачей для нетривиальных приложений, специально для программ общего назначения, предназначенных, чтобы использоваться большим разнообразием пользователей для еще более широкого диапазона целей. Системы меню и диалоговые окна пытаются устранить разрыв, позволяя маленькие, определенные для задачи модальные разделы в большем, немодальном приложении. Никакой масштабы особенно хорошо однако, и неправильное употребление и злоупотребление не оставил их с плохой репутацией, часто рассматриваемой как первое убежище ленивого программиста. Диалоговые окна в особенности часто используются больше в качестве средства принуждения пользователей в программиста (или разработчик) идея того, как приложение должно использоваться, или плывущие на плоскодонке трудные проектные решения и хитрая обработка ошибок в пользователе, а не для их цели тезки коммуникации.

Действительно, повышение веб-приложений подняло такие тенденции на поверхность на многочисленных форумах, группах новостей и Q& сайты, такие как этот, поскольку программисты приучили к записи ультралинейной логики, которая предлагает пользователям вход при необходимости программе скорее чем, когда доступный пользователю... вызываются в систему, где пользователи могут перейти нелинейно, и может просмотреть любую попытку ограничить эту свободу как странное раздражение, которое будет ниспровергаться, а не необходимое зло. Жалобные вопли этих бедных кодеров отзываются эхом вокруг 'Сети как их попытки вызвать это сырое модальное поведение на немодальную систему, обрушенную вокруг них. Для тех из нас, кто долго страдал под их жестокими "диалоговыми окнами", это - прекрасная мелодия действительно.

23
ответ дан Shog9 27 November 2019 в 02:01
поделиться

В потребительском приложении стиля они более или менее бесполезны; пользователи не читают их, учатся отклонять их, и когда они ДЕЙСТВИТЕЛЬНО читают их, обычно заканчивайте тем, что были смущены. Я думаю, что диалоговое окно Yes/No/Cancel является совершенно ленивым дизайном UI. "Кнопки говорят, что они делают" диалоговое окно, немного лучше, потому что пользователь не должен читать очень.

, Что быть сказанным: В критической по отношению к данным интранет / приложения "предприятия", они более или менее необходимы для подтверждения разрушительных действий или к проверке работоспособности нестандартные рабочие процессы, которые могут быть позволены, но не рекомендованы.

Так, я не думаю, что они являются концептуально "злыми", но как правило, результат плохого дизайна UI.

7
ответ дан davetron5000 27 November 2019 в 02:01
поделиться

Они являются злыми, потому что они нарушают основной принцип, что пользователь, как предполагается, в состоянии направить действие программного обеспечения. Модальные диалоговые окна (злая форма диалоговых окон в целом) ограничивают пользователя только к одному действию.

Некоторые ответы, кажется, неправильно понимают это, это - любое всплывающее окно, которое просит, например, пользовательское подтверждение. Это могло быть выполнено, не связывая целое приложение или компьютер; это - это поведение тот, люди возражают против.

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

5
ответ дан dkretz 27 November 2019 в 02:01
поделиться

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

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

Мышление Вы Вам все еще нужны они в некоторых случаях.

4
ответ дан Nathan W 27 November 2019 в 02:01
поделиться

Статья Wikipedia имеет хорошее суммирование жалоб.

3
ответ дан Alan Storm 27 November 2019 в 02:01
поделиться

Я не помню, где я видел это сначала, но лучший подход к модальному диалоговому окну должен часто позволять легкому находить и использовать возможность "отмены". Windows Explorer на самом деле делает обоих при удалении файла. Это просит подтверждение (модальное диалоговое окно), тогда, сразу после удаления файла, меню Edit имеет опцию "Undo Delete". просто простой способ получить доступ к Корзине, наверняка, но в этом случае, Microsoft действительно, возможно, просто покончила с диалоговым окном.

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

Однако иногда Вы действительно хотите диалоговое окно. Думайте обо всех опциях на типичном диалоговом окне Печати. Какой принтер? Все страницы или только некоторые? Сколько копий? Я не знаю, как Вы сделали бы это без диалогового окна...

3
ответ дан JeffK 27 November 2019 в 02:01
поделиться

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

3
ответ дан user45568 27 November 2019 в 02:01
поделиться

Лично я думаю, что это зависит полностью от того, как это сделано.

Попытка, копирующая 10 файлов, где каждый файл существует в целевом каталоге, сделайте это с помощью Windows Explorer.

единственное модальное диалоговое окно для каждый файл действительно корректный ответ в такой операции. Я знаю, что у Вас есть "Да ко всем", но вся система цикла должна была быть создана по-другому. Это должно было собрать все файлы, который существует в один большой список и спросил однажды, "Что делает Вы хотите сделать с этими файлами", и затем позволять мне решить для каждого спиливают список, что сделать прежде, чем нажать "OK" и возобновить операцию.

И много диалоговых окон времен просто прерывают нормальный рабочий процесс.

И да, люди не читают диалоговые окна. Таким образом, золотая подсказка, если необходимо использовать диалоговое окно, должна перефразировать его.

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

2
ответ дан angry person 27 November 2019 в 02:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: