Попробуйте проверить входы и нормализовать как можно скорее, тогда вы можете смело использовать первый вариант.
Если ваш пользовательский интерфейс позволяет вводить в эту переменную что угодно (например, текстовое поле), то в вашем примере вы можете получить «M», «Male», «Man», «Boy» или «Männlich» как возможный честный вклад для мужчины, прежде чем даже считать, что кто-то может предложить глупый ответ. Проверяя (и нормализуя) эти значения, прежде чем использовать их, вы можете предложить более отзывчивый отзыв пользователю.
Если ваш пользовательский интерфейс ограничивает это переключателем, то он нормализуется еще раньше.
Если значение выбирается из какого-либо хранилища данных, то, в зависимости от приложения и ваших знаний о целостности этого хранилища данных, может существовать или не быть никакого значения при проверке достоверности записи перед действием на ценности, содержащиеся в.
Если большинство записей, вероятно, будут соответствовать, и действия, которые вызывают различные значения, являются дешевыми и обратимыми, я бы использовал второй вариант и выбрасывал исключение, если значение не подходит.