繁体   English   中英

检查Java中2种方法的特定结果的最佳方法

[英]Best way to check specific result of 2 methods in Java

我有以下方法

public Message JavaMethod(String id1, String id2)

我需要在其中调用Dao类的方法来验证具有提供的ID的用户是否存在,如果不存在,请使用以下方法创建一条消息,详细说明在数据库中找不到的ID:

createMessage("Message string",Enum.TYPE,IdofMissingUser);

起初,我想到这样做:

public Message JavaMethod(String id1, String id2) {

        if(Dao.findUser(id1) == null || Dao.findUser(id2) == null){
           return createMessage("Error",Enum.Error,id1);
        }else{
           //do some other stuff
        }
}

但是显然,这样一来,我将不知道尚未找到哪个ID。

因此,我继续进行操作,并创建了一个丑陋的循环:

public Message JavaMethod(String id1, String id2) {

    if (Dao.findUser(id1) == null) {
        return createMessage("Error", Enum.Error, id1);

    } else if (Dao.findUser(id2) == null) {
        return createMessage("Error", Enum.Error, id2);
    } else {
        // Do stuff after veryfing users exists
        return createMessage("All OK", Enum.OK, messageData);
    }
}

但是,我对这是解决此基本问题的最佳解决方案并没有真正的信心。

在这种情况下,你们会推荐什么?

您可以将ID包装在列表中并使用for循环:

public Message someMethod(String id1, String id2) {
    for (String id: Arrays.asList(id1, id2)) {
        if (Dao.findUser(id) == null) {
            return createMessage("Error", Enum.Error, id);
        }
    }
    // Do stuff after verifying users exists
    return createMessage("All OK", Enum.OK, messageData);
}

如果只有两个ID,可以使用简写布尔值。 问题是,这是否会使它的可读性降低。 例如

public Message JavaMethod(String id1, String id2) {
        User user1 = Dao.findUser(id1);
        User user2 = Dao.findUser(id2);            
        if(user1  == null || user2  == null){
           return createMessage("Error",Enum.Error,user1 == null ? id1 : id2);
        }else{
           //do some other stuff
        }
}

如果两个ID都为null,这也不会处理,因为您可以扩展它:

public Message JavaMethod(String id1, String id2) {
        User user1 = Dao.findUser(id1);
        User user2 = Dao.findUser(id2); 
        if(user1  == null || user2  == null){
           return createMessage("Error",Enum.Error,user1  == null && user2  == null? both : user1 == null ? id1 : id2);
        }else{
           //do some other stuff
        }
}

您需要定义both变量的返回值

有关速记布尔注释的更多详细信息,请参见此处

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM