Имя, второе имя, фамилия. Почему не Полное имя?

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

В дополнение к этому, это - также плохая практика, потому что это блокирует "слишком много"

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

42
задан Community 13 April 2017 в 12:32
поделиться

21 ответ

Держите свои данные в чистоте, насколько это возможно!

Как?

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

Как вы храните имя, не имеет значения. Важно то, что

  1. пользовательский опыт настолько хорош, насколько это возможно
  2. у вас нет ложных данных в вашей системе

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

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

Что делают пользователи, если их заставляют вводить такие данные, как их почтовый адрес, или даже адрес электронной почты, если им нужна только учетная запись «только для чтения» без уведомлений? Они помещают мусорные данные в вашу систему. Это в любом случае сделает бесполезными алгоритмы суперпоиска и сортировки.

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

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

36
ответ дан 26 November 2019 в 23:15
поделиться

Некоторые проблемы можно решить, сохранив дополнительный столбец, например PreferredName. Мы делаем это в нашей БД, а также сохраняем столбец префикса и столбец суффикса. например «Профессор Генри Джонс-младший» с предпочтительным именем «Индиана Джонс».

0
ответ дан 26 November 2019 в 23:15
поделиться

Проблема с i18n в любом случае может стать проблемой. в некоторых культурах сначала используется фамилия, а фамилия - последнее, что дает представление об именах и фамилиях, поэтому мы переходим к полям для фамилий и имен. Подождите , в некоторых культурах нет фамилии или фамилия изменяется в зависимости от пола названного.
Мы можем попасть в племенные культуры, где человека переименовывают в зрелом возрасте. «Сидящего быка» в детстве звали «Прыгающий барсук».
Это что-то вроде заблуждения, но я показываю, что чем больше у вас полей, тем точнее будет дизайн. Должно быть как минимум поле not null 'заданное имя' и необязательное поле 'фамилия', привязанное к PK , которое является целым числом. Если вышеупомянутые требования соблюдены, поля могут быть добавлены без проблем с нарушением запросов.

0
ответ дан 26 November 2019 в 23:15
поделиться

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

  1. first_name и middle_name; или
  2. given_names.

(2), возможно, более предпочтителен, потому что люди иногда имеют больше чем два имени, и (1) более негибкий в этом отношении.

Кроме того, другое общее поле - это имя_предварительного имени (в дополнение к выше).

0
ответ дан 26 November 2019 в 23:15
поделиться

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

0
ответ дан 26 November 2019 в 23:15
поделиться

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

Просто убедитесь, что они обрабатываются в каком-то формате Unicode и что код приложения правильно обрабатывает преобразование Unicode.

1
ответ дан 26 November 2019 в 23:15
поделиться

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

1
ответ дан 26 November 2019 в 23:15
поделиться

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

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

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

1
ответ дан 26 November 2019 в 23:15
поделиться

Гибкость.

например. Если бы у кого-то была двойная фамилия и не было отчества.

1
ответ дан 26 November 2019 в 23:15
поделиться

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

1
ответ дан 26 November 2019 в 23:15
поделиться

Дело в том, что даже люди не могут все время делать это правильно, просто слишком много данных и слишком много особых случаев. Я мог бы изменить свое имя прямо сейчас, чтобы оно состояло из 20 частей, со средним 13 в качестве моего «первого» имени. Части имен могут содержать любое количество слов, и может быть любое количество частей имен. У некоторых людей есть только одно имя (без фамилии). У некоторых людей много отчества. У некоторых людей имя или фамилия состоят из нескольких слов. Некоторые люди сначала указывают свою фамилию. Некоторые люди носят отчество. Некоторые люди используют псевдонимы, которые явно не связаны с их именем.

Если вы попытаетесь угадать эти условные обозначения в программном обеспечении, ВЫ БУДЕТЕ НЕУДАЧИ. Период. Может быть, вы будете делать это правильно иногда, может быть, даже в большинстве случаев, но стоит ли оно того? На мой взгляд, вам следует хранить имена в одном поле и перестать пытаться быть милым, используя имена для обозначения человека. Если вам нужна дополнительная информация об имени (например, псевдоним), спросите пользователя!

2
ответ дан 26 November 2019 в 23:15
поделиться

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

1
ответ дан 26 November 2019 в 23:15
поделиться

Единственное, что я могу придумать, - это поисковые цели. Лучше искать в поле с помощью [=], чем говорить [например].

Если вам не нужно отображать имя в виде отдельных слов, используйте одно поле.

Но если вам нужно это сделать что-то вроде [Дорогой мистер Ачу], тогда, возможно, подход из трех полей будет лучше.

2
ответ дан 26 November 2019 в 23:15
поделиться

Такие вещи, как ORDER BY firstname или ORDER BY lastname , возможны, когда вы разбиваете имя на несколько полей.

Не так просто сделать, когда вы смешаете все имена в одном поле.

4
ответ дан 26 November 2019 в 23:15
поделиться

Разделение полей позволяет поддерживать различные форматы вывода и культуры, в которых фамилия записывается первой

4
ответ дан 26 November 2019 в 23:15
поделиться

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

например, если вы хотите найти всех мистеров Ноланов, ваш запрос будет

SELECT Title+' '+FirstName+' '+Surname As FullName  
from table where firstname = 'Mr' and surname ='Nolan'

сделать это только с полными именами было бы затруднительно.

7
ответ дан 26 November 2019 в 23:15
поделиться

К сожалению, это похоже на вопрос, как лучше всего сохранить число в базе данных. Это зависит от того, что вы собираетесь с ним делать - иногда вам нужен int, иногда байт, а иногда и float. Что касается имен, это зависит от таких вещей, как, например, из каких культур, по вашему мнению, будут происходить ваши пользователи, что вы планируете делать с именами (будете ли вы использовать эти имена для подключения к другой системе, которая хранит имена как «фамилия, имя»? ) и сколько вы можете позволить себе раздражать своих пользователей. Если это внутреннее HR-приложение, вы, вероятно, можете позволить себе сильно раздражать пользователей и иметь очень структурированную, формальную разбивку компонентов имени (их гораздо больше, чем 3 - не забывайте, мистер / миссис, младший, III, несколько отчества, фамилии через дефис, и кто знает, что еще, если вы пытаетесь обрабатывать имена из всех культур. Если у вас есть веб-приложение, которое может заинтересовать пользователей, а может и нет, вы не можете требовать от них внимания.

11
ответ дан 26 November 2019 в 23:15
поделиться

На днях я искал Гражданскую войну в Испании и нашел это исключение из большинства правил:


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

Для чего мы будем использовать имена?

  1. Имя на адресной этикетке почтовой службы
  2. Приветствие на веб-сайте
  3. Неофициальное имя

На основе для чего будут использоваться имена, мы определим, сколько информации хранить. Возможно, мы позволим пользователю ввести все три из них, включая разрывы строк в первом случае (генералиссимус Франко мог бы захотеть перечислить свои полные должности и назначения, если бы он еще не был мертв). Может быть, мы предоставим «Первое», «Среднее», «Последнее», «Поколение» в качестве опции, а остальные укажем по умолчанию. Может быть, мы предлагаем другие распространенные варианты, такие как Фамилия, Имя.

Это контрастирует со старыми стилями First, Middle, Last, которые мы использовали с тех пор, как я начал программировать на COBOL еще в 1975 году и «подогнал». с тех пор.

13
ответ дан 26 November 2019 в 23:15
поделиться

Как говорили другие, как разложить полное имя на составные части.

  • Колин Ангус Маккей
  • Жан-Мишель Жар
  • Винсент Ван Гог
  • Пабло Диего Хосе Франсиско де Паула Хуан Непомусено Мария де лос Ремедиос Сиприано де ла Сантисима Тринидад Руис и Пикассо

Как можно надежно разложить этот лот?

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

17
ответ дан 26 November 2019 в 23:15
поделиться

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

Допустим, вы хотите написать электронное письмо, начинающееся с «Дорогой Ричи "- вы можете сделать это тривиально, если у вас есть поле given_name , но выяснить, каково чье-то имя по его полному имени, нетривиально.

Вы также можете тривиально выполнить поиск или отсортировать по ] given_name , или family_name , или что угодно.

(Обратите внимание, я использую given_name , family_name и т. д., а не first_name , last_name , потому что разные культуры ставят свои имена в разном порядке.)

Решить эту проблему в общем случае сложно - вот статья, которая дает представление о том, насколько это сложно: Представление имен людей в Дублинском ядре .

64
ответ дан 26 November 2019 в 23:15
поделиться

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

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

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

2
ответ дан 26 November 2019 в 23:15
поделиться
Другие вопросы по тегам:

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