设想一个简单的银行应用程序,其中正在实现资金转移的用例。在编写转移基金操作时,程序员/设计人员有以下两个选项
发布于 2011-09-08 12:37:45
当前JVM中的性能差异应该可以忽略不计。然而,坚持在特殊情况下应使用例外情况的规则。如果没有足够的资金,这是一个正常的流程,因此我将使用一个方法public boolean transferFund(),如果成功返回true,则返回false,否则返回false。这个建议违反了命令/查询分离,但我认为它是好的。
发布于 2011-09-08 12:38:03
业绩的影响不太可能变得足够大,足以让人担心。但是,我仍然建议在特殊情况下使用例外情况。在这种情况下,您不需要两种方法。你可以
boolean transferred = transferFundsIfAvailable( ... );使用两种方法的一个不受欢迎的原因是,即使单个方法是线程安全的,它也可能导致争用条件。说你有
if(checkSufficientFunds()) {
// another thread transfers funds
transferFund(); // but there is not enough any more
}另外,你也可以忘记先打电话给支票。没有它你会过得更好。
发布于 2011-09-08 12:41:47
在运行时,尝试捕获块不会显著影响性能。只有当异常发生时,在这些情况下,您必须无论如何处理异常。但是,只有当需要异常时(当应用程序无法正常运行时),您才必须使用异常。
https://stackoverflow.com/questions/7348040
复制相似问题