ein Rubygem Ich schreibe und das ist nützlich für das Zählen von Wortvorkommen in einem Text, ich wähle 3 Parameter im Klassenkonstruktor.Ist es akzeptabel, Parameter im Klassenkonstruktor zu haben?
Der Code funktioniert, aber ich möchte es für die Nettigkeit umgestalten. Erfahrungsgemäß ist es einfacher, eine Klasse mit einem Konstruktor ohne params und einer Menge Setter/Getter-Methode oder einem Code wie diesem mit allen Parametern im Konstruktor als API zu lesen/zu halten.
TIA
Paolo
def initialize(filename, words, hide_list)
if ! filename.nil?
@filename = filename
@occurrences = read
else
@filename = STDIN
@occurrences = feed
end
@hide_list = hide_list
@sorted = Array(occurrences).sort { |one, two| -(one[1] <=> two[1]) }
@words = words
end
Ein Vorteil von Parametern im Konstruktor in anderen Sprachen ist, dass Sie den Typ unveränderlich machen können. Sie können das nicht tun, wenn Sie alles separat einstellen. Ich weiß nicht, ob das für Ruby gilt oder nicht, weshalb dies eher ein Kommentar als eine Antwort ist. –
@Jon: http://StackOverflow.com/Questions/408208/Ruby-immutable-Objects diskutiert, ob Sie unveränderliche Objekte in Ruby (die sich von unveränderlichen Typ unterscheiden können) –