很多时候,我遇到的情况是我可以选择返回bool或void。例如,考虑案例:
public (return_type) updateQueryStats(String ident, Double execTime) {
Double newAvgTime;
//calculate average query time.
avgTime.put(ident, newAvgTime);
//return true;
}
让我们说这些将被其他用户用作API或库。虽然两者功能相同,但哪一种更好。
答案 0 :(得分:2)
对于返回Boolean
的更新查询,让用户知道操作成功/失败。
答案 1 :(得分:2)
如果您的方法始终返回true
,并且在任何情况下都不会返回false
值。或者你只是将boolean
返回类型表示成功的数据库查询,我会避免使用boolean
返回类型。您最好将返回类型保留为void
,因为从技术上讲,该方法不会返回任何内容。如果失败,您可以根据是否要继续失败来抛出异常 - 未经检查或已检查,您可以决定。
答案 2 :(得分:1)
如果您不想返回布尔值,则可以在更新操作失败时抛出异常
答案 3 :(得分:0)
当您想要一种方法来检查方法中的操作是否成功时,可以使用返回boolean
。
另一方面,如果您希望方法不返回任何内容(void
),则可以使用try-catch
子句来处理问题。
当然,这取决于你的计划是如何运作的,你必须选择更适合你情况的方式。
答案 4 :(得分:0)
虽然这里没有严格的规则,但让我列出我的个人准则:
如果未执行操作[1]的净效果,请通过例外报告失败。这将迫使调用者意识到失败。可以默默忽略返回值。
如果有两种(或更多种)不同情况[2]可以达到相同的预期净效果,请使用boolean
(或更精细的返回类型,例如{{1 }})报告遇到的情况。
否则,无效enum
。
[1]此处:void
[2]例如,avgTime.get(ident) == execTime
可能已经有一个与avgTime
相关联的值。
答案 5 :(得分:0)
我肯定会选择void
。如果您发现需要一些返回值,可以稍后更改它。这种变化比其他方式简单得多。
您可能还会发现需要返回其他内容(例如newAvgTime
)而不是boolean
。
此外,您如何记录返回值?
请注意,返回值意味着您必须以某种方式获取它,这可能会降低性能