java web一次需求改动的教训
一个需求:考勤统计上显示请假,出差等信息。(这里简化为:统计表与请假表)
原来设计:请假后直接更改统计表
现在需求更改:请假后可以撤销
问题:如何将数据还原,之前直接保存在统计表里面,如果要还原有两种办法
1.反向计算出原统计的数据
2.建一个中间表,用于储存请假之后的统计信息
实践:我选择了第二种,因为我们的统计数据非常复杂,第二种方式更灵活。在写代码的时候,我将新的统计数据与旧的统计数据的差值保存在中间表,这样当我想还原的时候加上这个差值就可以了。这样做是为了防止同一天有多条请假,如果都撤消了,就需要每个都计算。这样一来,旧的数据被新的数据替换,后台找出数据,前台直接显示就够了。撤销的时候再计算一次,然后就还原成旧的数据。
但是,我的组长对我说,这样不行,你这有点面向过程的编程,如果中间哪个环节出错,最后写入到表里面的数据就是错的。他让我想一下如何对象。
最后我改成统计表不改变,中间表存放新数据与旧数据的差值,通过计算让前台显示出新的数据。这样一来,我不用去动统计表,根据中间表显示新数据,更加方便,当撤销时,直接删除中间表的数据就行了,这样显示的就还是旧的数据。