Ruby名称空间礼仪和惯例
如果我正在为一个已建立的库编写帮助程序,我是应该在它们的命名空间中创建一个Ruby名称空间礼仪和惯例,ruby,namespaces,naming-conventions,Ruby,Namespaces,Naming Conventions,如果我正在为一个已建立的库编写帮助程序,我是应该在它们的命名空间中创建一个TheirLibrary::MyHelper模块,还是不去做自己的::TheirLibraryMyHelper 我认为可以预见的是,库通常有向其名称空间添加扩展的先例,例如Spec::Rails,它是现有::Spec名称空间中用于RSpec的Rails helpers插件 另一方面,我不觉得我“拥有”了其他作者的名称空间,所以我是否有业务向其添加子名称空间?我将不参与他们的名称空间(无论您最终选择如何命名扩展名称空间)因为
TheirLibrary::MyHelper
模块,还是不去做自己的::TheirLibraryMyHelper
我认为可以预见的是,库通常有向其名称空间添加扩展的先例,例如Spec::Rails
,它是现有::Spec
名称空间中用于RSpec的Rails helpers插件
另一方面,我不觉得我“拥有”了其他作者的名称空间,所以我是否有业务向其添加子名称空间?我将不参与他们的名称空间(无论您最终选择如何命名扩展名称空间)因为这意味着你不会意外地与他们决定要做的事情发生碰撞。环顾四周,我注意到“插件”或“扩展”gem的约定要求如下:
require'coolthing/plugin'
对应于名称空间coolthing::plugin
而其他项目是
需要与唯一名称空间相对应的“coolthing插件”
通常,只有那些“正式”的名称空间才会嵌入到原始名称空间中。那些来自不同方面的后续添加应该使用自己的名称空间。我称之为
TheirLibraryHelpers::MyModule
。老实说,Rails干扰过库甚至核心Ruby的方式对于第三方库来说是不可取的(如果不是说非常糟糕的话)。