如果我正在为已建立的库编写帮助程序,我应该TheirLibrary::MyHelper
在他们的命名空间中创建一个模块,还是留在外面并自己制作::TheirLibraryMyHelper
?
我认为是可预见的一致,库通常有在其命名空间中添加扩展的先例,例如Spec::Rails
,它是 RSpec 的 Rails 助手插件,在现有的::Spec
命名空间中。
另一方面,我不觉得我“拥有”其他作者的命名空间,所以我应该有任何业务添加子命名空间吗?
如果我正在为已建立的库编写帮助程序,我应该TheirLibrary::MyHelper
在他们的命名空间中创建一个模块,还是留在外面并自己制作::TheirLibraryMyHelper
?
我认为是可预见的一致,库通常有在其命名空间中添加扩展的先例,例如Spec::Rails
,它是 RSpec 的 Rails 助手插件,在现有的::Spec
命名空间中。
另一方面,我不觉得我“拥有”其他作者的命名空间,所以我应该有任何业务添加子命名空间吗?
我会远离他们的命名空间(无论你最终选择如何命名你的扩展命名空间),因为这意味着你不会意外地与他们决定在路上做的事情发生冲突。
环顾四周,我注意到“插件”或“扩展”宝石的约定是必需的:
require 'coolthing/plugin'
对应命名空间Coolthing::Plugin
而其他项目是
require 'coolthing-plugin'
对应于唯一的命名空间CoolthingPlugin
通常只有那些“官方的”被嵌入到原始命名空间中。那些来自不同方的后续添加应该使用他们自己的命名空间。