Ruby on rails 如何将大型类的私有方法移出单个文件
我有一个相当大的类,有很多功能,由以下部分组成:Ruby on rails 如何将大型类的私有方法移出单个文件,ruby-on-rails,ruby,Ruby On Rails,Ruby,我有一个相当大的类,有很多功能,由以下部分组成: 3公共方法 20多种私人方法 零状态(无属性) 将我的类拆分为多个文件,同时将3个公共方法保留在初始文件中,并且不使私有实现可访问整个应用程序的最佳选项是什么?如评论中所建议的,您可以重新打开该类并只定义私有方法 或者,您可以定义一个模块并将其包含在类中: module FooPrivate private def greet 'hello' end end class Foo include FooPrivate
- 3公共方法
- 20多种私人方法
- 零状态(无属性)
将我的类拆分为多个文件,同时将3个公共方法保留在初始文件中,并且不使私有实现可访问整个应用程序的最佳选项是什么?如评论中所建议的,您可以重新打开该类并只定义私有方法 或者,您可以定义一个模块并将其包含在类中:
module FooPrivate
private
def greet
'hello'
end
end
class Foo
include FooPrivate
def hello
greet
end
end
上述行动:
irb> Foo.new.greet
NoMethodError (private method `greet' called for #<Foo:0x00007f83ba04bd58>)
irb> Foo.new.hello
=> "hello"
irb>Foo.new.greet
NoMethodError(为#调用的私有方法'greet')
irb>Foo.new.hello
=>“你好”
整个应用程序将始终具有访问权限,这是ruby。但是你可以用另一种方式来做,用你的公共API定义一个公共模块,它本身包含在一个私有实现中,你可以通过getter/factory/whatevert来获得这个私有实现。公共方法可能会调用私有方法。将后者移动到单独的文件中会使代码更难理解。读卡器必须在两个文件之间跳过。我只是把公共方法放在上面,私有方法放在private
关键字下面。Ruby类是开放的。只需将实现拆分成几个文件即可。@AlekseiMatiushkin实现详细信息不应引起兴趣,无论它是私有方法还是公共方法。但是,如果出于某种原因我必须深入研究实现,我通常希望/需要所有细节。将方法放在使用它们的地方!将内容移动到另一个文件会降低可读性