Мы создаем социальную сеть, и в рамках адаптации пользователей мы хотим присвоить каждому пользователю уникальное имя пользователя.

Единственным определенным в настоящее время вариантом использования имени пользователя является URL-адрес профиля, т. е. если ваше имя пользователя gajus, тогда ваш профиль доступен через foo.xyz/@gajus. Из-за этого требования мы решили принудительно использовать имена пользователей, безопасные для URL.

В настоящее время мы рассматриваем 4 способа назначения имен пользователей:

Имя пользователя, введенное по имени пользователя

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

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

Не вариант.

Не присваивайте имена пользователей

Обращайтесь к профилям пользователей по их числовым идентификаторам, пока пользователь не выберет имя пользователя (foo.xyz/@123).

Мы считаем, что это делает URL-адреса профилей лишенными индивидуальности и устраняет гарантию того, что у каждого пользователя есть уникальное имя пользователя (что полезно для упрощения дизайна системы).

Создание уникального имени пользователя с использованием имени + случайного идентификатора

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

  • Если имя пользователя Gajus и
  • их фамилия Куизинас,
  • их имя пользователя gajus_kuizinas_dk1f,

Где «dk1f» — случайный идентификатор.

(Логика обеспечения уникальности сгенерированного имени пользователя выходит за рамки вопроса.)

Это самый простой в реализации и легко предсказуемый вариант.

Генерация уникального имени пользователя из компонентов предоставленных данных + случайный идентификатор в качестве запасного варианта

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

  • gajus_kuizinas
  • gkuizinas
  • gajusk
  • и другие комбинации, о которых мы думаем

Вернуться к gajus_dk1f (где "dk1f" — случайный идентификатор).

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

Какой из них обеспечивает наилучший пользовательский опыт?

4
Gajus 10 Сен 2020 в 04:21

6 ответов

Очень впечатляет иметь все варианты заранее.

На мой взгляд, ваш третий вариант (генерация уникального имени пользователя с использованием имени + случайный идентификатор) лучше всего подходит для следующих преимуществ:

  1. В некоторой степени позволяет пользователю иметь персонализированное имя пользователя. Это лучше, чем просто цифры.
  2. Как вы уже сказали - Менее сложная логика для генерации. Экономически эффективным.
  3. Вы можете разрешить пользователю изменить его позже на индивидуальный, как мы видим в профилях linkedin.
  4. Предоставленные данные Имена пользователей иногда кажутся забавными, как мы видим в игровых приложениях (PubG и все). Для веб-сайтов социальных сетей выбор предоставленных данных будет очень избирательным процессом. И я не думаю, что команда должна вкладывать больше средств в приложение, не ориентированное на имя пользователя.

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

Спасибо.

6
Moksh 10 Сен 2020 в 16:01

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

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

3
Michael Lai 16 Сен 2020 в 02:41

Не усложняйте это.

Во-первых, сообщите пользователю, каковы правила для имен пользователей, например, какие символы разрешены, а какие нет.

Во-вторых, если они введут один, проверьте и скажите им, если он уже занят.

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

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

1
Tim Holt 17 Сен 2020 в 10:16

Повторить:

  • Пользователи не входят в систему с этим именем пользователя, а используют адрес электронной почты или другую форму идентификации, которую они легко запомнят.
  • Это имя пользователя используется только для именных URL-адресов, которые будут использоваться пользователями в сети.

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

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

Если заинтересованные стороны твердо настроены на наличие тщеславных идентификаторов, вы также можете добавить выбранное пользователем имя после уникального ключа, например, site.co/123456/jane_swenson. Это сведет на нет необходимость в уникальных URL-адресах и позволит автоматически отражать в URL-адресе имя пользователя, которое отображается в его профиле.

1
Elliot 25 Сен 2020 в 16:28

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

Имя пользователя — это простая и личная копия, но она редко используется в URL-адресе (если только ваши намерения или индивидуальность вашего продукта таковы, что страница профиля будет часто использоваться совместно с другими). - На самом деле ваши пользователи, скорее всего, никогда не запомнят свои идентификаторы, и это не повлияет на их опыт.

С другой стороны, должно ли имя пользователя соответствовать настоящему имени? Если в вашем продукте нет ничего особенного (например, на иммиграционном веб-сайте требуется настоящее имя), пересмотрите решение «настоящее имя + случайный идентификатор».

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

0
Feynman 25 Сен 2020 в 09:33

Начать с

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

Требования

  • личный / относительный
  • уникальный
  • URL-безопасный

Чтобы создать уникальные «личные» имена пользователей, остается вопрос: что является слишком личным? Я считаю, что можно использовать имя с чем-то другим. Это действительно может быть фамилия, но согласны ли пользователи? Лично я думаю, что это не очень хорошая идея, но первая буква должна подойти. А что еще вы знаете о пользователе на этом этапе? Можно ли использовать год рождения? Можете ли вы создать что-то вроде "john_1983_1" или "john_w_1983_1" с последней "1", чтобы сохранить единообразие и уникальность имен пользователей. Или, может быть, это может быть просто год регистрации: «john_w_2020_1». Его легко запомнить, он уникален и даже немного индивидуален. Но это не обязательно безопасно для URL. Если имя содержит специальные символы, такие как «björn_2020_1», оно становится «bj%C3%B6rn_2020_1», когда URL-адрес безопасный. Вы можете просто использовать «bjorn_2020_1», но это будет означать изменение чьего-то имени.

Вывод

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

0
jazZRo 25 Сен 2020 в 19:15