库设计与扩展性:从方法合并到插件系统
1. 方法合并与复杂度权衡
在设计库时,一个重要的决策是如何处理方法的数量和复杂度。可以选择定义许多简单的方法,也可以选择定义较少但更复杂的方法。
首先,考虑获取记录的方法。最初可能有多个方法用于获取不同偏移量和数量的记录。例如:
def first_record(offset: 0)
reset
offset.times{next_record}
next_record
end
def record_at_offset(o)
first_record(offset: o)
end
def first_n_records(n, offset: 0)
reset
offset.times{next_record}
ary = []
n.times do
break unless record = next_record
ary << record
end
ary
end
这里, first_record 方法使用了关键字参数 offset 来处理可选的偏移量,默认值为 0。 record_at_offset 方法通过调用 first_record 来保持 API 的一致性。
接下来,可以进一步合并方法。例如,将 first_n_records 和 first_n_matching_records <
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



