Ruby 代表性别或性别的红宝石公约
在将ruby用作对象中的字段时,ruby约定用于表示一个人的性别是什么?有一个二元性别假设(我并不同意这一点,但数据通常是以这种方式收集的) 您会在不同的情况下使用不同的类型吗?当我们向用户显示此信息时,我们希望以某种有意义的方式显示它(Ruby 代表性别或性别的红宝石公约,ruby,oop,types,conventions,Ruby,Oop,Types,Conventions,在将ruby用作对象中的字段时,ruby约定用于表示一个人的性别是什么?有一个二元性别假设(我并不同意这一点,但数据通常是以这种方式收集的) 您会在不同的情况下使用不同的类型吗?当我们向用户显示此信息时,我们希望以某种有意义的方式显示它(Male,Male,M,无论什么,而不是0或1),我们可能希望使用它按性别对对象进行排序。我的想法是使用:男性和:女性之类的符号,但我想听听对Ruby有更多经验的人的想法 虽然我找到了一些建议(编写您自己的替代枚举代码并创建一个性别类),但我没有找到任何东西将这
Male
,Male
,M
,无论什么,而不是0
或1
),我们可能希望使用它按性别对对象进行排序。我的想法是使用:男性
和:女性
之类的符号,但我想听听对Ruby有更多经验的人的想法
虽然我找到了一些建议(编写您自己的替代枚举代码并创建一个性别类),但我没有找到任何东西将这种方法与使用布尔、符号、字符串、字符进行比较或对比,或者将其视为常见的约定。我认为,在现代编程中,特别是在Ruby等语言中,正如你所说,使用像
0
,1
这样的幻数被认为是一种不好的做法。然后,自然选择是为每个性别使用字符串、符号或特定类。对于封闭类,应避免使用字符串。当使用一个符号时,我认为标准的做法是使用一个完整的单词,而不是缩写,并且使用小写字母(如果超过一个单词,则使用下划线)。所以我认为:男和:女将是一个不错的选择。或者,您可以拥有男性
和女性
类,每个类都有一个唯一的对象,就像FalseClass
和TrueClass
。或者,您可以简单地定义两个对象
实例男性
和女性
。由于性别之间没有自然的顺序,你需要定义你自己的
我个人使用符号:m
/:f
或整数1
/0
。对于整数,顺便说一下,你甚至不需要记住哪个是哪个。这很直观!:)符号可能是最好的选择。虽然理性的人不太可能在这一点上大发雷霆,但要记住:(1)性别和性别被一些人认为是不同的概念(基本上是生物属性与社会角色和/或身份),以及(2)有些人(性别/性/无论你怎么称呼它)不符合男性/女性二元结构,并且(3)其性别和性别(由1)不匹配。@delnan,是的,你提出了我同意并意识到的重要观点。我把性别和性别放在标题中只是为了关键词的目的,不是因为我相信它们是一样的(尽管有些搜索者可能会这样!)。如果我是在收集数据,我向你保证,这将以更加准确和敏感的方式进行,如果有,但不幸的是,我只是接收者,我目前使用的数据假设性别二元,即性别=生物性别,每个人都有性别,并使用这些假设来识别数据输入中的错误。唉,我倾向于使用符号,而不是类或魔法数字。不过,这基本上只是意见,所以YMMV。