2013-05-13 154 views

回答

7

做[...]有什么区别吗?

唯一的区别是,在class Bus::DriverBus模块必须来已经定义,而同样并不代表第二。

哪种语法是首选的?

这不是一个建设性的问题,但我个人更喜欢第二个,因为它规定明确表示Bus是一个模块,而与第一,我不能在第一眼看到如果Bus是一个模块或一个类。

3

这一点,对自己:

class Bus::Driver 
end 

将导致在某些时候,你有一个错误NameError: uninitialized constant Bus

所以申报class Busmodule Bus。不过,每次都不必是完整的层次结构。

我倾向于提前设置命名空间,然后在其余文件中使用更简洁的形式。我不知道有任何首选的方法 - 绝对没有你会被批评的。

1

当您在项目中的多个文件中分布不同类型的模块时,首选语法;并提供module始终在PATH中定义。比如,在制作gem时。

其次更为中心,应该在细节方面完成。 module不仅包括class,还包括methodsconstants等;这是有用的。