簡體   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