我注意到在Ruby中,厂商API通常将结果作为数组返回。难道不应该采用类似Java中的Plain Old Objects(POJOs)作为标准吗?如果我编写自己的库,我应该使用POROs而不是POJOs。
所有的东西都是对象,重要的是返回的对象是否与行为相关联。这样做是可以的:
def read_first_and_last_name(data_source)
[data_source.read_string, data_source.read_string]
end
但是当你发现这些数据项与某些行为相关联时...
def print_name(first_name, last_name)
puts "#{first_name} #{last_name}"
end
def read_and_print_name
first_name, last_name = read_first_and_last_name(data_source)
print_name(first_name, last_name)
end
如果它们应该是一个类,那么它们应该是:
class FullName
def FullName.read(data_source)
FullName.new(data_source.read_string, data_source.read_strng)
end
def initialize(first_name, last_name)
@first_name = first_name
@last_name = last_name
end
def print
puts "#{@first_name} #{@last_name}"
end
end
def read_and_print_name
FullName.read(data_source).print
end