В качестве одной из целей разработки всегда указывайте обязательное подтверждение получения команд пользователя, даже если они не могут быть немедленно обработаны. Обычно любая задержка с таким подтверждением, превышающая 0,5 секунды, вызывает у конечного пользователя чувство раздражения. При возникновении задержки ответа пользователи часто пытаются повторить команду, что может стать причиной еще большего раздражения, если вторая команда переводит приложение в нежелательное состояние или оно начинает работать не так, как ожидается.
Неплохой аналогией этому в повседневной жизни может служить ожидание в очереди. Когда подходит ваша очередь, вы хотите получить подтверждение того, что человек, обслуживающий очередь, вас заметил. Если в течение некоторого времени на вас не обращают никакого внимания, вы начинаете раздражаться. Даже если бы вас всего лишь попросят немного обождать, это будет несравненно лучше, чем вообще не получить никаких признаков ответной реакции от того, кто вас должен обслужить. Не допускайте того, чтобы ваше приложение игнорировало пользователя даже на протяжении коротких промежутков времени.
Примеры, иллюстрирующие различные варианты организации обратной связи с пользователемНиже приводится пример кода, который иллюстрирует три различных варианта организации обратной связи с пользователем, активизируемых щелчками на соответствующих кнопках. Каждая кнопка имитирует запуск определенной задачи, для выполнения которой требуется 4 секунды. Во всех случаях интерактивная связь с пользователем на время выполнения задачи теряется, однако восприятие этого факта пользователем во всех исследуемых случаях является совершенно различным. Этот пример показывает, что даже совсем незначительные факторы могут оказывать сильное влияние на оценку пользователем производительности и качественных характеристик приложения. Ниже представлены краткие описания каждого из трех вариантов организации обратной связи с пользователем в приложении, используемом в качестве примера:
1. Плохая обратная связь. В этом случае пользовательский интерфейс просто блокируется на время выполнения работы. Пользователи не получают никакого сообщения о причине блокирования, им ничего не сообщается о том, как долго будет отсутствовать связь с интерфейсом, и они не извещаются о восстановления способности приложения к отклику. Подобное поведение пользовательского интерфейса будет очень раздражать конечных пользователей, поскольку им остается только гадать, когда их щелчки на кнопках вновь смогут вызывать определенные действия со стороны приложения. Щелчки, выполненные в то время, когда приложение не проявляет ответной реакции, помещаются в очередь и обрабатываются тогда, когда приложение восстанавливает свою способность к интерактивному взаимодействию с пользователем. В результате этого, если пользователь начинает проверять, вернулось ли приложение в обычный режим, то могут быть выполнены нежелательные действия. Этот пример демонстрирует образец совершенно непродуманного, неудачного дизайна.
2. Хорошая обратная связь. В этом случае пользовательский интерфейс отображает "курсор ожидания" в течение всего периода, на протяжении которого интерфейс не способен отвечать на запросы пользователей. Наличие курсора ожидания говорит пользователям о том, что в настоящее время приложение не может реагировать на их запросы, а его исчезновение будет означать, что способность приложения реагировать на запросы восстановлена. Таким образом, для существенного улучшения поведения пользовательского интерфейса потребовались лишь самые незначительные усилия.
3. Улучшенная обратная связь. В этом случае на экране отображается не только курсор ожидания, информирующий пользователей о том, что приложение не может реагировать на их запросы, но и текстовое сообщение, объясняющее, чем именно занято приложение в данный момент. Такое поведение интерфейса еще больше устраивает пользователей, поскольку они становятся информированными участниками процесса, и пока идет работа, для них выводится пояснительный текст. Если в процессе выполнения этой работы происходят какие-либо изменения, пользователи будут об этом знать. Постоянно получая информацию о состоянии задачи, пользователи чувствуют себя комфортно. Для создания подобных условий требуется приложить немного больше усилий, чем во втором примере, но если мы в состоянии держать пользователей в курсе дел и предоставить им возможность следить за происходящими в системе изменениями, то достигнутый эффект окупит затраченные на это усилия.
Предполагается, что представленный в листинге 7.3 текст вы поместите в класс Form в проекте для Pocket PC. Для создания и выполнения примера необходимо выполнить следующие действия:
1. В Visual Studio .NET (2003 или более поздней версии) начните новый проект для Pocket PC с использованием языка C#.