Object 银行账户余额建模

Object 银行账户余额建模,object,model,uml,orientation,Object,Model,Uml,Orientation,各位, 几个月前,我为银行创建了一个类模型,它有一个带有属性(属性)余额(以及其他)的类BankAccount。我还有一个与BankAccount关联的事务类,它存储每个帐户事务。存储事务后,我总是更新余额。在我公司工作的一位开发人员告诉我,拥有平衡属性不是一个好主意,但他拒绝解释原因。他说这是显而易见的。我看不出有什么明显的错误。对我来说,通过处理所有交易,每次需要时都计算余额似乎并不明智。我遗漏了什么吗?每次添加、删除或修改交易时,都必须重新计算余额。这些事情很有可能发生在其他人编写的代码中

各位,
几个月前,我为银行创建了一个类模型,它有一个带有属性(属性)余额(以及其他)的类BankAccount。我还有一个与BankAccount关联的事务类,它存储每个帐户事务。存储事务后,我总是更新余额。在我公司工作的一位开发人员告诉我,拥有平衡属性不是一个好主意,但他拒绝解释原因。他说这是显而易见的。我看不出有什么明显的错误。对我来说,通过处理所有交易,每次需要时都计算余额似乎并不明智。我遗漏了什么吗?

每次添加、删除或修改交易时,都必须重新计算余额。这些事情很有可能发生在其他人编写的代码中,而这些人不知道或忘记了平衡。您的开发人员可能已经被这样烧掉很多次了。对他们来说,每次有人想查看余额时重新计算余额的成本,与错误余额的成本和尴尬相比,只需几分钟。重新计算还可以减少和简化程序——这总是一件好事

一般来说,计算机时间——CPU、磁盘和其他一切——都很便宜。如果可以的话,可以自由花钱来提高可靠性和节省程序员的时间


现在,如果您有一个需要200毫秒来汇总交易的程序,并且该程序每秒在余额上得到10000个查询,那么您的方法就开始有意义了。

就我个人而言,每当我想访问
对象变量时,我总是使用
属性,即使只有
getter
public

getter
并不总是简单地
返回foo
,有时您需要初始化其他
对象
或执行日志记录。类似地,
setter
提供了一种简洁的机制,用于验证试图分配给
变量的新

好的,这两个示例都可以在直接访问
变量之前执行,但如果您经常访问它,则不希望每次都编写
对象初始化
验证
代码。把它放在一个集中的地方要方便得多,而且适合封装


我建议你再次问你的同事,为什么他认为这是个坏主意。他应该毫无保留地解释他的理由。

是的。我就是这么想的。你知道真正的银行是怎么做的吗?不幸的是,没有。我有一些猜测,但我怀疑它们比你的好。