我有一个带有公共方法的类,例如:
class CsvParse
def initialize(csv_file)
@csv_file = csv_file
end
def parse
...
end
end
csv_parse = CsvParse.new('csv_file.csv')
csv_parse.parse
但是班级的设计也可以这样:
class CsvParse
def initialize(csv_file)
@csv_file = csv_file
parse
end
private
def parse
...
end
end
csv_parse = CsvParse.new('csv_file.csv')
最佳做法是什么?
答案 0 :(得分:2)
在这种特殊情况下,有一个暴露的辅助方法,它将文件解析为它的csv表示(无论它是什么。)
语义上最好的呼叫是:
csv_parse = CsvParser.parse 'csv_file.csv'
所以,我会声明构造函数private,防止直接创建这些对象:
class CsvParser
def initialize ...
end
private_class_method :new
def self.parse *args
CsvParser.send(:new, *args).send(:parse)
end
private
def parse ...
end
答案 1 :(得分:0)
通常你不应该在初始化时开始解析 - 根据单一责任原则,一个方法应该做一件事。