如果3个可能的结果,返回值的最佳实践?

时间:2011-03-17 17:24:12

标签: java

这是一个新手问题,但我想我真的不明白最佳做法是什么。

基本上,我有一个名为“emailScan”的方法,它会扫描以查看数据库中是否已存在电子邮件。这可能会导致三种可能的结果:

  • 电子邮件不存在
  • 电子邮件存在且与某人相关联
  • 电子邮件存在且已向个人注册

问题是,这种方法应该返回什么?我的想法:

  • 显然不会返回布尔值。
  • 它不会抛出一个已检查的异常,因为这些都不是例外情况。
  • 它可以只返回原始的Email对象,让调用方法确定它是关联还是注册。
  • 它可以返回表示三个结果的Enum

有什么想法吗?

5 个答案:

答案 0 :(得分:6)

Enum是要走的路!

public enum EmailStates {
    DOES_NOT_EXIST,
    EXISTS_ASSOCIATED,
    EXISTS_REGISTERED
}

答案 1 :(得分:2)

如果您想知道三种情况中的哪一种存在,但又不想要任何更多信息(如电子邮件本身),那么Enum(或者甚至只是一个int,以保持简单)是要走的路

答案 2 :(得分:2)

对于这种情况,枚举似乎是最好的,实际上大多数情况下存在少量可能的值:

public enum EmailAssociation { NONE, ASSOCIATED, REGISTERED }
public EmailAssociation emailScan(String email) { ... }

答案 3 :(得分:2)

它可以是一个枚举,或者你可以使用异常,如果你只需要处理一个案例(并将其他案例作为错误返回)。 如果不是这种情况,我会使用Enum

答案 4 :(得分:1)

从数据库获取数据并在数据上运行某些逻辑是两回事。因此,仅返回电子邮件对象似乎是最好的方法。然后,您可以重复使用该功能来搜索电子邮件并执行其他操作。