gpt4 book ai didi

java - 返回值: boolean vs int flag vs exception

转载 作者:太空宇宙 更新时间:2023-11-04 06:55:52 25 4
gpt4 key购买 nike

我需要定义一组函数作为面向公众的 SDK 接口(interface)的一部分,并尝试找出向调用者代码发送信号的最佳方式(如果成功或失败,如果失败,为什么不成功)。

我首先考虑的是返回值与异常。我想我需要将两者结合起来。由错误引起的错误状态/错误的异常(exception)情况。当函数按预期运行并且只想将调用结果返回给调用者时使用的返回值。

现在,返回类型。我可以使用整数(标志)或 boolean 值。内部有人争论应该使用 boolean 值,因为它更简单,并且不需要标志。 boolean 值限制您指定成功或失败,没有任何解释。

我会提出两个使用标志的论点。首先,您可以返回两个以上的可能值。允许 { success、fail、fail_reason_1、fail_reason_2、fail_reason_3 }。请注意,由于这是用于在各种硬件设备上实现的接口(interface),因此可能希望能够通知操作失败的原因。例如连接的设备不支持蜂鸣声、没有 LCD、不支持嵌入式加密等。

谁知道将来会有什么要求。返回 bool 会锁定您现在的状态,而使用标志可以让您在将来获得更大的灵 active 。如果您将来永远不需要两个以上的值那又怎样呢?至少你有选择。

考虑到这将是一个面向公众的 SDK,我希望有尽可能多的灵 active ,以防止将来发生重大更改。

谢谢

最佳答案

在我看来,返回一个值来指示方法调用的结果与抛出异常之间的区别在于,值只是有关所发生事件的通知。对于其定义的合约,方法调用应被视为已成功执行。例如看看boolean : Set.add()如何已定义。

如果一个方法抛出异常,这应该表明该方法的使用不正确或者在对象/整个系统处于非法状态时进行了调用。例如,尝试为用户购买东西,而他的帐户没有足够的积分。

异常非常适合捕获不同的故障类型:可以通过异常层次结构,也可以通过向异常添加属性(如 getFailureCode())或将它们组合起来。

不会使用标志来指示故障条件,以防必须处理故障。因为忽略返回值太容易了,很容易被程序员忽略,而异常则必须主动忽略。

关于java - 返回值: boolean vs int flag vs exception,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22755835/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com