5

使用类而不是模块进行命名空间是否有效和/或可接受?也许这只是一个意见问题,但我认为有人可能有这方面的经验,可以明确地说这是否是一种公认​​的做法。

以以下类为例:

class Parent
end

class Parent::Child1 < Parent
end

class Parent::Child2 < Parent
end

我知道上面的代码有效,但是使用类而不是命名空间的模块似乎很奇怪。我想将父类名称添加到子类的原因是因为我计划拥有很多子类并希望避免名称冲突。例如:

class Priority
end

class Priority::Low < Priority
end

class Temperature
end

class Temperature::Low < Priority
end

替代方法是不使用命名空间,只使用父名称作为子类名称的一部分:

class PriorityLow < Priority
end

Ruby 中有没有命名空间的最佳实践?

更新:

@sawa 在下面询问了一些示例。这是我构建的一个名为classy_enum的 Gem,它允许用户定义作为 Enum 类型成员的类。查看示例用法部分以了解更多背景信息。我正在清理代码库,我突然想到我建议的命名方案可以改进。因此PriorityLow,您可以使用Priority::Low(或任何最有意义的,但我倾向于后者)而不是 using

4

1 回答 1

6

我没有明确的答案,但似乎值得注意的是 RubyClass类是 的子类Module,这对我来说意味着 Class 是 Module 的一种类型,这表明做你想做的事可能是合理的。我当然看不出有任何理由避免它,尽管我很好奇是否有人提出任何潜在的缺点。

于 2012-07-15T04:51:47.410 回答