2016-05-04 5 views
0

Ich habe die folgende MethodeDer beste Weg, spezifische Ergebnis von 2 Methoden in Java

public Message JavaMethod(String id1, String id2) 

, in dem ich muss zu überprüfen, ein Dao Klasse-Methode aufrufen, um zu überprüfen, dass ein Benutzer mit dem mitgelieferten Id existieren, und wenn es nicht, erstellen sie eine Nachricht detailliert die Id, die nicht auf der Datenbank mit dem folgende Verfahren gefunden werden konnte:

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

zuerst dachte ich, es wie folgt tun:

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

Aber offensichtlich werde ich auf diese Weise nicht wissen, welche der IDs nicht gefunden wurde.

Also ging ich weiter und erstellt einen hässlichen, wenn sonst Zyklus:

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

Aber ich fühle mich nicht wirklich überzeugt, dass dies die beste Lösung für dieses grundlegende Problem ist.

Was würden Sie in diesem Fall empfehlen?

+0

Ihre Lösung ist ok für mich persönlich. –

+0

Sie könnten auch feststellen, dass sowohl "id1" als auch "id2" null waren. Möchten Sie diese Bedingung überprüfen? – Draken

+0

@draken nein, in diesem Fall würde ich nur wissen müssen, ob einer von ihnen nicht gefunden wird – slash3584

Antwort

3

Sie könnten die IDs in einer Liste wickeln und eine for Schleife verwenden:

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

Wenn Sie immer nur zwei IDs gehen zu müssen, können Sie mit einem Kurzschrift boolean umgehen können. Die Frage ist, ob dadurch das Ganze weniger lesbar wird. Z.B.

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

Dies auch nicht behandelt, wenn sowohl der IDs waren null, für die Sie könnte es erweitern:

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

Sie bräuchten zu definieren, was Sie für die both Variable zurückkehren

Mehr Details über die Kurz boolean Anmerkung kann here

+0

'Dao.findUser (id1) == null 'bedeutet nicht, dass' id1 'ist' null ', aber es gibt keine 'Benutzer' mit dieser ID –

+0

Aktualisiert, verpasst. Ich gehe davon aus, dass es eine Benutzerklasse zurückgibt – Draken

Verwandte Themen