我有一个由两部分组成的问题。
最佳实践
- 我有一个算法,使用公共接口在数据结构上执行某些操作
- 它目前是一个具有众多静态方法的模块,除了一个公共接口方法外,所有方法都是私有的。
- 有一个实例变量需要在所有方法之间共享。
这些是我能看到的选项,哪个是最好的?:
- 具有静态方法的模块 ('module' in ruby)
- 具有静态方法的类
- Mixin 模块用于包含到数据结构中
- 重构 算法修改该数据结构的部分(非常小),并将其制作为混合并调用算法模块的静态方法
技术部分
有没有办法制作一个私有模块方法?
module Thing
def self.pub; puts "Public method"; end
private
def self.priv; puts "Private method"; end
end
这里的private似乎没有任何效果,我仍然可以毫无问题地调用Thing.priv
。
private
只影响实例方法,不影响类方法。应该使用private_class_method
:module Thing; def self.pub; end; private_class_method :pub; end
- apeiros