0

我的代码确实有效,但我不确定这是否是正确的方法。其目的是允许每天只修改一次特定文件。有很多代码,但大致看起来像这样:

class Something
  def initialize
    if file_modified_today
      load_file
      #it loads variables from a file
    else
      @aaa = rand(1..30)
      # ... lots of other variable assignments
    end 
  end
  def file_modified_today
    #returns true or false
  end
  def load_file
    #reads and loads variables from a file
  end
end

我希望我的代码不会令人困惑。我的问题是,这种初始化类的方式错了吗?我可能会想到一种从初始化中删除 if-else 和方法调用的方法,也许可以定义类方法,并在创建实例之前使用它

4

1 回答 1

0

我不完全确定你到底想要做什么。但是,这不是initialize对象的最佳方式。

你为什么不尝试创建一个类方法呢?

class Something

  def initialize
    @aaa = rand(1..30)
  end

  def self.file
    if file_modified_today?
      load_file
    else
      new() # initialize a new object
    end
  end

  def self.load_file
    #reads and loads variables from a file
  end

  private

  def file_modified_today?
    #returns true or false
  end
end

但是,您可能要考虑不同的方法。如果当天修改了文件,您似乎只想加载文件。你可以在#load_file方法中处理它。这使得该#file方法过时了。因此,在这种情况下,如果文件被修改或创建新对象,您可以加载文件。

load_file if file_modified_today?
于 2013-10-30T23:26:49.317 回答