这看起来像露比的鸭子打字一样吗?
|
我创建了一个跟踪汽车行驶里程和服务历史记录的程序,以便为用户更新汽车的近期服务需求。
我有三个班级:
Car
,CarHistory
和CarServiceHistoryEntry
。第三个很简单;它包含与服务相关的所有属性:日期,里程,执行的服务等。“ 1”类如下:
require_relative \'car_service_history_entry\'
class CarHistory
attr_reader :entries
def initialize (*entry)
if entry.size > 1
@entries = []
else
@entries = entry
end
end
def add_service_entry entry
@entries << entry
end
def to_s
entries_string = \"\"
@entries.each {|entry| entries_string << \"#{entry.to_s}\\n\"}
entries_string
end
end
在initialize
中,应该检查entry
的等级吗?
在ѭ7中,采用鸭子类型(如“编程Ruby”中Andy Thomas的论点),我什至会测试是否可以添加CarServiceHistoryEntry
吗?我不能通过a9而不是设置然后在我的单元测试中添加ѭ2吗?
由于CarHistory
唯一必要的属性是entries
数组和to_s
方法,我是否应该将所有此类都废弃,然后将其放入car
类中?
没有找到相关结果
已邀请:
3 个回复
枫湃揩乾纲
扇献隙
,也许只是倒退,应该是
。
是的,Ruby应该很简单。您不需要使用运行时类型检查来乱扔代码。如果代码运行您的单元测试,那么您只需声明胜利即可。无论如何,成千上万的显式转换往往会修补类型错误。 Ruby仍将在运行时检查您的类型。将类型检查交给解释器并全力投入功能测试是完全合理的。
艰管垮淮