资金账户,发生支出、收入、转入或转出时,其余额都需要发生变化,这属于最基本的功能。目前,《个人助手》在设计上,采用了两种计算方式:
1、根据账户的当前操作,计算余额。
2、根据账户的所有历史操作,计算余额。
从字面上理解,不难发现,第2种计算方式肯定比第1种方式复杂,耗时更多些。但第2种方式,肯定是最准确的。接下来,我们分析下第1种方式的弊端。
最理想情况下,第1种方式肯定是准确的。比如从A账户支出30¥,只需要将A账户当前的余额减去30即可;又比如从A账户转出30¥到B账户,那么A账户余额减30,同时B账户余额加30。排除手机此时出现异常的情况,只要之前账户余额正确,那么计算之后的账户余额,也肯定是正确的。
此算法的关键是,需要知道发生变动的账户和变动的金额。如果能在操作过程中确定这两点,即使是删除收、支、转账记录,其计算过程,也是理论上正确的。
那么如果,某次操作无法确定这两点呢?没错,这样的操作的确存在。比如,有A、B两个账户,有一条转账记录为:从A转入B账户30¥。此时,修改转账记录,内容改为从B转入A账户30元。我们在保存时,就无法知道,账户的金额变化,应该是如何了。也就是说第1种计算方式,无法实现了。
可以这样说:
第1种方式判断过程复杂,计算过程简单,速度快,但存在漏洞。
第2中方式判断过程简单,计算过程复杂,记录越多速度越慢,计算可以保证准确。