表示性别或性别的 Ruby 约定

标签 ruby oop types conventions

当将它用作对象中的字段时,用于表示人的性别的 ruby​​ 约定是什么?存在二元性别假设(不是我同意这一点,但通常以这种方式收集数据)。

您会针对不同的情况使用不同的类型吗?当我们向用户显示此信息时,我们希望以某种有意义的方式显示它(MalemaleM 等等,而不是 01),我们可能想用它来按性别对对象进行排序。我的想法是使用 :Male:Female 之类的符号,但我想听听有更多 Ruby 经验的人的想法。

虽然我找到了一些建议(编写您自己的替代枚举代码并创建一个 Gender 类),但我没有找到任何可以比较或对比这种使用 bool 值、符号、字符串、字符的方法,或者将其标识为常见的方法约定。

最佳答案

我认为,在现代编程中,尤其是在像 Ruby 这样的语言中,使用像 0 这样的魔数(Magic Number)。 , 1正如您所说,这被认为是一种不好的做法。然后,自然的选择是为每个性别/性别使用字符串、符号或特定类。对于封闭类,您应该避免使用字符串。使用符号时,我认为使用完整的单词而不是缩写是标准的,并且使用小写字母(如果不仅仅是一个单词,则使用下划线)。所以我觉得:male:female会是一个不错的选择。或者,您可以使用 MaleFemale类,每个类都有一个独特的对象,就像 FalseClassTrueClass .或者,您可以简单地定义两个 Object实例 MaleFemale .由于 gender/sex 之间没有自然排序,因此您需要定义自己的 <=> .

关于表示性别或性别的 Ruby 约定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15030036/

相关文章:

mysql - NameError - 未定义的局部变量 - 将数组从 ruby​​ 文件解析为 haml 文件

java - 泛化类和继承问题

java - 什么时候在 java 中使用 linkedhashmap 而不是 hashmap?

c++ - 条件类型定义

c# - C#中如何控制类型转换

ruby-on-rails - 使用 Ruby 日期对象时,是什么导致我的 Ruby on Rails 控制台输出和我的 Firebug 控制台输出之间存在这种差异?

ruby-on-rails - "desc"如何排序group_by?

ruby-on-rails - Rails : making link_to method send remote request as JSON type, 不是 JS 类型

java - 在 Java 中返回排序列表

c# - 为什么 C# 中的 IEnumerator<T> 需要两个 Current 方法?