Waze:一条路况曾经正确,也需要知道它什么时候过时
Waze 让司机报告现场道路危险,并通过后续反馈调整报告的显示时间。值得借鉴的是把信息的时效当成产品的一部分,而不是把一次正确上报永久留在地图上。
先尝试拆解问题、设计和实现,再展开思路,检查状态、边界与取舍,并设计验证用例。思路提供分析路径,不给出完整实现。
01
代码思考
让提示按观察时间退场
实现一个本地道路提示模块。每条提示有唯一编号、观察时刻和文字,时刻均以整数分钟表示。初始有效期为观察时刻加 10;一次“已不存在”反馈把到期时刻缩短为原到期时刻与反馈时刻加 2 中较早的值,绝不延长。到期时刻本身已经不可见。
- 模块支持接收提示、记录反馈和按传入的当前时刻读取可见提示。接收的编号不重复;反馈只针对已接收提示。当前时刻只会前进或保持不变,反馈时刻等于该次调用的当前时刻。提示可以延迟送达,必须仍按观察时刻计算有效期。已过期提示不能被反馈重新激活。返回结果按编号排序。
- 时刻 2 收到 R1,观察时刻为 0,到期为 10。时刻 4 的反馈使它到期为 6;时刻 5 再反馈不能把到期改到 7。时刻 5 查询应含 R1,时刻 6 查询为空。时刻 12 才收到观察时刻为 1 的 R2,它一收到就不可见。
- 交付可运行模块与这些调用,说明时间规则放在哪里,怎样无需真正等待即可验证结果。无需地图、网络或后台定时清理。
查看思路
把提示的观察时间与接收时间分别保留,思考哪一个决定信息已经存在多久。让反馈只向更早的到期时间收敛,再用恰好到期和延迟送达两种例子检查;读取可见性不必依赖定时删除。