2013-02-22 2 views
2

Что такое конвенция ruby ​​для представления пола или пола человека при работе с ним в качестве поля в объекте? Существует двоякое гендерное предположение (не то, что я согласен с этим, но данные обычно собираются таким образом).Конвенция Ruby для представления пола или пола

Вы бы использовали разные типы для разных ситуаций? Когда мы показываем эту информацию пользователям, мы хотим показать ее каким-либо значимым образом (Male, male, M, что угодно, а не 0 или 1), и мы можем использовать его для сортировки объектов по полу. Моя мысль состоит в том, чтобы использовать символы :Male и :Female или тому подобное, но я хотел бы услышать мысли людей с большим опытом работы в Ruby.

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

+1

Я лично использую либо символы ': m' /': f', либо целые числа '1' /' 0'. С целыми числами, кстати, вам даже не нужно запоминать, что есть. Это интуитивно! :) –

+1

символы, вероятно, были бы лучшим выбором. –

+5

Хотя маловероятно, что разумные люди будут совершать серьезные преступления по этому вопросу, полезно помнить, что (1) пол и пол считаются разными понятиями некоторыми (в основном биологическими свойствами по сравнению с социальными ролями и/или идентичностью) и (2) там это люди, чей (пол/пол/то, что вы называете) не вписывается в бинарный код мужчины и женщины, и (3) чей пол и пол (на 1) не совпадают. – delnan

ответ

0

Я думаю, что в современном программировании, особенно в таких языках, как Ruby, использование магического числа, такого как 0, 1 считается плохой практикой, как вы говорите. Тогда естественным выбором является использование строки, символа или конкретных классов для каждого пола/пола. Для закрытого класса вам следует избегать использования строки. При использовании символа я считаю стандартным использовать полное слово, а не аббревиатуры, а в нижнем регистре (с подчеркиванием, если это больше, чем слово). Поэтому я думаю, что :male и :female были бы хорошим выбором. Кроме того, вы можете иметь классы Male и Female, каждый из которых имеет уникальный объект, такой как FalseClass и TrueClass. Или вы можете просто определить два экземпляра ObjectMale и Female. Поскольку нет никакого естественного порядка среди пола/пола, вам необходимо определить свой собственный <=>.

+2

Определите '<=>' и получите иск! – Reactormonk

Смежные вопросы