今天在看The evil of duplication这一节,想起了以前做的一个项目,项目的名字这里就不说了。问题是这样的:有一样商品,30盒/箱。定价的时候是按照大的包装定价的,但是零售的时候可以按照小的包装来零售。最后对账的时候总是有少量的偏差,查了很久,才发现问题的所在。有两个地方都有各自的方法计算价格。例如,卖了2盒该商品,计算方法一:
- 计算每盒商品的单价,精确到分,四舍五入,价格为3.33元/盒。
- 计算2盒的总价,为6.66元。
计算方法二:
- 计算每盒商品的单价,价格为3.33333333元/盒
- 计算2盒的总价,精确到分,四舍五入,总价为6.67元。
两种方法就产生了1分钱的偏差,每个月月末对账的时候就总是有少量的偏差。当时这个问题让我们查了很久。这就是因为同一个rule在不同的地方有重复的实现,实现方式又有偏差导致的。