为什么在初始化时没有使用setter方法?

 手机用户2502938137 发布于 2023-02-11 11:35

最近我一直在阅读"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方法而不是直接使用=运算符来设置实例变量的值?

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有