Is it acceptable having parameter in class constructor?

后端 未结 3 1029
感情败类
感情败类 2021-01-13 06:33

a rubygem I\'m writing and that is useful for counting word occurrences in a text, I choose to put 3 parameters in class constructor.

The code is working, but I want

相关标签:
3条回答
  • 2021-01-13 06:52

    In my experience I can tell that the very reason for allowing constructor parameters in most languages, apart from the fact of increasing the easiness in class instantiation, is to make it easy to use the API.

    Favoring constructor, over getter/setter instantiation, also helps immutability, that is, creating an object thorough its constructor, and not letting anyone modify its properties later on.

    0 讨论(0)
  • 2021-01-13 07:10

    I dont know how it is in Ruby, but in other languages you usually put those arguments in the constructor signature that are needed to initialize the object into a valid state. All other state can be set through setters.

    0 讨论(0)
  • 2021-01-13 07:14

    You could do it the rails way, where options are given in a hash:

    def initialize(filename = nil, options = {})
      @hide_list = options[:hide_list]
      @words = options[:words]
    
      if filename
        @filename = filename
        @occurrences = read
      else
        @filename = STDIN
        @occurrences = feed
      end
    
      @sorted = Array(occurrences).sort { |one, two| -(one[1] <=> two[1]) }
    
    end
    

    Then you can call it like this:

    WC.new "file.txt", :hide_list => %w(a the to), :words => %w(some words here)
    

    or this:

    wc = WC.new
    wc.hide_list = %w(a the is)
    wc.words = %w(some words here)
    
    0 讨论(0)
提交回复
热议问题