2016-05-04 2 views
0

У меня есть следующий методЛучшего способ проверить конкретный результат 2 методов в Java

public Message JavaMethod(String id1, String id2) 

В котором мне нужно вызвать метод относится к классу Dao, чтобы убедиться, что пользователь с предоставленным 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 
     } 
} 

Но, очевидно, таким образом я не буду знать, какая из идентификаторов не найдена.

Так что я пошел вперед и создал уродливый, если еще цикл:

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); 
    } 
} 

Но я не чувствую себя уверенным, что это лучшее решение для этого основного вопроса.

Что вы, ребята, рекомендуете в этом случае?

+0

Вашего решения нормально для меня. –

+0

Вы также можете обнаружить, что и 'id1', и' id2' были пустыми, хотите ли вы проверить это условие? – Draken

+0

@draken no, в этом случае мне нужно было бы только знать, не найден ли один из них – slash3584

ответ

3

Вы можете обернуть идентификаторы в списке и использовать 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); 
} 
1

Если вы только когда-либо будете иметь два идентификатора, вы могли бы иметь дело с сокращенным булевым. Вопрос в том, делает ли это менее понятным. Например.

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 
     } 
} 

Это также не касается, если оба из идентификаторов были пустыми, для этого вы можете продлить его:

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

Более подробной информации о сокращенной булевой аннотации можно найти here

+0

'Dao.findUser (id1) == null' не означает, что' id1' является 'null', но нет 'Пользователь 'с этим идентификатором. –

+0

Обновлено, пропущено это. Я предполагаю, что он возвращает класс 'User' – Draken

Смежные вопросы