从 Java 中的方法返回状态标志和消息的最佳方式
2022-09-01 12:04:04
我有一个看似简单的场景,我想要一个简单的解决方案,但哪个是“最正确”或“最Java”并不明显。
假设我在某个类中有一个小的身份验证(客户端客户端)方法。身份验证可能由于多种原因而失败,我想为控制流返回一个简单的布尔值,但也要为用户返回一个 String 消息。这些是我能想到的可能性:
- 返回一个布尔值,并传入 StringBuilder 以收集消息。这是最接近C风格的方式。
- 引发异常而不是返回 false,并包含该消息。我不喜欢这样,因为失败并不例外。
- 创建一个名为 AuthenticationStatus 的新类,其中包含布尔值和字符串。对于一个小方法来说,这似乎有点过分了。
- 将消息存储在成员变量中。这将引入一个潜在的竞争条件,我不喜欢它暗示一些实际上不存在的状态。
还有其他建议吗?
编辑错过了此选项关闭
- 返回 null 表示成功 - 这不安全吗?
编辑溶液:
我选择了最OO的解决方案,并创建了一个小的AuthorationResult类。我不会用任何其他语言做到这一点,但我喜欢用Java。我也喜欢返回String[]的建议,因为它就像空返回一样,但更安全。Result 类的一个优点是,如果需要,您可以获得包含更多详细信息的成功消息。