17、库设计与扩展性:从方法合并到插件系统

库设计与扩展性:从方法合并到插件系统

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 <

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值