我有一个看似简单的场景,我想要一个简单的解决方案,但不清楚哪个是“最正确”或“最 Java”。
假设我在某个类中有一个小的身份验证(客户端客户端)方法。身份验证可能由于多种原因而失败,我想为控制流返回一个简单的 boolean 值,但也为用户返回一个字符串消息。这些是我能想到的可能性:
- 返回一个 boolean 值,并传入一个 StringBuilder 来收集消息。这是最接近 C 风格的方式。
- 抛出异常而不是返回 false,并包含消息。我不喜欢这样,因为失败也不异常(exception)。
- 使用 boolean 值和字符串创建一个名为 AuthenticationStatus 的新类。对于一种小方法来说,这似乎有点过头了。
- 将消息存储在成员变量中。这会引入一个潜在的竞争条件,我不喜欢它暗示一些实际上并不存在的状态。
还有其他建议吗?
编辑错过了这个选项关闭
- 返回 null 表示成功 - 这不安全吗?
编辑解决办法:
我选择了最面向对象的解决方案并创建了一个小的 AuthenticationResult 类。我不会用任何其他语言来做这件事,但我喜欢用 Java 做。我也喜欢这个建议 返回 String[] 因为它类似于 null 返回但更安全。 Result 类的一个优点是,如果需要,您可以收到包含更多详细信息的成功消息。
最佳答案
返回一个带有 boolean 标志和内部字符串的小对象可能是最类似于 OO 的方式,尽管我同意这样的简单情况似乎有点过头了。
另一种选择是始终返回一个字符串,并让 null(或一个空字符串 - 您选择哪个)表示成功。只要在 javadocs 中清楚地解释了返回值,就不应该有任何混淆。
关于java - 从 Java 中的方法返回状态标志和消息的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/356248/