ruby – 为什么初始化中不使用setter方法?
发布时间:2020-12-16 22:20:10 所属栏目:百科 来源:网络整理
导读:最近我一直在阅读“ Ruby中的实用面向对象设计”,我注意到最好的做法之一是使用访问器方法,而不是直接抓取@instance_variable.例如: class Foo attr_accessor :bar def initialize(my_argument) @bar = my_argument end # bad # def lorem_ipsum # @bar * 9
最近我一直在阅读“
Ruby中的实用面向对象设计”,我注意到最好的做法之一是使用访问器方法,而不是直接抓取@instance_variable.例如:
class Foo attr_accessor :bar def initialize(my_argument) @bar = my_argument end # bad # def lorem_ipsum # @bar * 999 # end # good def lorem_ipsum bar * 999 end end 将事情保持干预是有道理的,如果我需要在实际抓住其值之前处理@bar.但是,我注意到,initialize方法直接设置了@bar实例变量的值: class Foo attr_accessor :bar def initialize(my_argument) @bar = my_argument #<-- why isn't self.bar = my_argument used here? end 有没有理由呢?不应该使用setter方法,而不是直接使用=操作符来设置实例变量的值? 解决方法
你说得对,这样做会更有意义
class Foo attr_accessor :bar def initialize(my_argument) self.bar = my_argument end end 关于您是否应该尊重封装在对象本身内部的参数不同,但如果您相信这一点,那么是的,您应该这样做. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |