воскресенье, 12 декабря 2010 г.

Как убедиться, что разработчики уважают выбор пользователя

Это перевод It is all about making sure developers respect the user's preferences. Автор: Майкл Каплан.

Эта тема, про которую я уже говорил ранее, так что в этот раз я дам ей немного иной поворот.

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

Я могу бесконечно говорить на тему использования NLS API функций для того, чтобы эта настройка реально учитывалась, и насчёт того, какая это отличная идея.

Но разработчики часто так не думают.

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

Итак, поставьте себя на моё место. Или место разработчика, работающего над NLS. Как бы вы сделали, чтобы пользовательские настройки бы учитывались?

Ну, лучший способ - убедиться, что по умолчанию API используют предпочтения пользователя. Нужно сделать так, чтобы НЕ использование настроек было бы сложнее. И мы именно так и поступаем: все вещи вроде GetNumberFormat и GetLocaleInfo требуют от разработчика указывать флаг LOCALE_NOUSEROVERRIDE явно, чтобы не учитывать настройки пользователя. Таким же образом конструктор CultureInfo по умолчанию инициализируется по настройкам пользователя. Конечно же, вы можете явно передать False в параметре UseUserOverride, но вызов по умолчанию этого не требует.

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

Итак, даже через возражения некоторых людей, .NET Framework делает ту же вещь, что и Windows функции вроде lstrcmp и lstrcmpi - он уважает настройки пользователя по умолчанию в сравнениях, разборе строк и форматировании. Если вы являетесь разработчиком, который пишет код и вы хотите игнорировать эти настройки, то вам нужно для этого выполнить работу явно...

This post brought to you by "ܜ" (U+071c, a.k.a. SYRIAC LETTER TETH GARSHUNI)

Комментариев нет:

Отправить комментарий

Можно использовать некоторые HTML-теги, например:

<b>Жирный</b>
<i>Курсив</i>
<a href="http://www.example.com/">Ссылка</a>

Вам необязательно регистрироваться для комментирования - для этого просто выберите из списка "Анонимный" (для анонимного комментария) или "Имя/URL" (для указания вашего имени и ссылки на сайт). Все прочие варианты потребуют от вас входа в вашу учётку (поддерживается OpenID).

Пожалуйста, по возможности используйте "Имя/URL" вместо "Анонимный". URL можно просто не указывать.

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