Ich habe dieses Beispiel-CodeWie reduziere ich die if-else-Tiefe?
public static ActionProcessable getActionProcessor(TaskType currentTaskType, UserAction userAction){
String actionKey;
if(userAction != null){
if(currentTaskType != null){
actionKey = buildKey(currentTaskType, userAction);
if(dossierActions.containsKey(actionKey)){
return dossierActions.get(actionKey);
}
}
actionKey = buildKey(anyTaskType(), userAction);
if(dossierActions.containsKey(actionKey)){
return dossierActions.get(actionKey);
}
}
return new NullActionProcessor();
}
In dieser Logik ich eine Karte haben die ActionProcessable durch kombinierte Schlüssel und Tasktype Useraction zu speichern. Diese Methode gibt ActionProcessable mit Eingabe taskType und Aktion zurück. TaskType kann null sein. In diesem Fall müssen wir nur nach userAction suchen.
Wenn ich diesen Code durch Sonar überprüfen, sagen Sie es der dritte wenn wird „Verschachtelte if-else Tiefe 2 (max 1)“
Aber ich weiß nicht, wie man es besser machen . Hat mir jemand etwas vorgeschlagen?
Dank @ Yeldar Kurmangaliyev. Ihre Erklärung ist mir klar, und ich denke, dass Code prägnanter und sauberer aussieht. Mein Beispiel ist in Java, aber es ist auch gut in C# zu wissen. –