优选的返回类型:void或bool

时间:2014-02-11 06:57:57

标签: java c++ return-type

很多时候,我遇到的情况是我可以选择返回bool或void。例如,考虑案例:

public (return_type) updateQueryStats(String ident, Double execTime) {
    Double newAvgTime;    
    //calculate average query time.
    avgTime.put(ident, newAvgTime);
    //return true;
}

让我们说这些将被其他用户用作API或库。虽然两者功能相同,但哪一种更好。

6 个答案:

答案 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

此外,您如何记录返回值?

  • 成功时返回真实情况?:什么是“成功”?如果出现问题,你应该扔掉。
  • 始终返回true。?:这有什么用?

请注意,返回值意味着您必须以某种方式获取它,这可能会降低性能