Object 银行账户余额建模
各位,Object 银行账户余额建模,object,model,uml,orientation,Object,Model,Uml,Orientation,各位, 几个月前,我为银行创建了一个类模型,它有一个带有属性(属性)余额(以及其他)的类BankAccount。我还有一个与BankAccount关联的事务类,它存储每个帐户事务。存储事务后,我总是更新余额。在我公司工作的一位开发人员告诉我,拥有平衡属性不是一个好主意,但他拒绝解释原因。他说这是显而易见的。我看不出有什么明显的错误。对我来说,通过处理所有交易,每次需要时都计算余额似乎并不明智。我遗漏了什么吗?每次添加、删除或修改交易时,都必须重新计算余额。这些事情很有可能发生在其他人编写的代码中
几个月前,我为银行创建了一个类模型,它有一个带有属性(属性)余额(以及其他)的类BankAccount。我还有一个与BankAccount关联的事务类,它存储每个帐户事务。存储事务后,我总是更新余额。在我公司工作的一位开发人员告诉我,拥有平衡属性不是一个好主意,但他拒绝解释原因。他说这是显而易见的。我看不出有什么明显的错误。对我来说,通过处理所有交易,每次需要时都计算余额似乎并不明智。我遗漏了什么吗?每次添加、删除或修改交易时,都必须重新计算余额。这些事情很有可能发生在其他人编写的代码中,而这些人不知道或忘记了平衡。您的开发人员可能已经被这样烧掉很多次了。对他们来说,每次有人想查看余额时重新计算余额的成本,与错误余额的成本和尴尬相比,只需几分钟。重新计算还可以减少和简化程序——这总是一件好事 一般来说,计算机时间——CPU、磁盘和其他一切——都很便宜。如果可以的话,可以自由花钱来提高可靠性和节省程序员的时间
现在,如果您有一个需要200毫秒来汇总交易的程序,并且该程序每秒在余额上得到10000个查询,那么您的方法就开始有意义了。就我个人而言,每当我想访问
对象变量时,我总是使用属性,即使只有getter
是public
getter
并不总是简单地返回foo
,有时您需要初始化其他对象
或执行日志记录。类似地,setter
提供了一种简洁的机制,用于验证试图分配给变量的新值
好的,这两个示例都可以在直接访问变量之前执行,但如果您经常访问它,则不希望每次都编写对象初始化
和验证
代码。把它放在一个集中的地方要方便得多,而且适合封装
我建议你再次问你的同事,为什么他认为这是个坏主意。他应该毫无保留地解释他的理由。是的。我就是这么想的。你知道真正的银行是怎么做的吗?不幸的是,没有。我有一些猜测,但我怀疑它们比你的好。