Als ich kürzlich in einer großen Firma arbeitete, bemerkte ich, dass die Programmierer dort diesem Codierungsstil folgten:
Angenommen, ich habe eine Funktion, die 12 zurückgibt, wenn der Eingang A ist, 21, wenn der Eingang B ist, und 45, wenn der Eingang C ist.
So kann ich die Funktionssignatur schreiben als:
int foo(String s){
if(s.equals("A")) return 12;
else if(s.equals("B")) return 21;
else if(s.equals("C")) return 45;
else throw new RuntimeException("Invalid input to function foo");
}
Bei der Codeüberprüfung wurde ich jedoch gebeten, die Funktion wie folgt zu ändern:
int foo(String s){
HashMap<String, Integer> map = new HashMap<String, Integer>();
map.put("A", 12);
map.put("B", 21);
map.put("C", 45);
return map.get(s);
}
Ich kann mich nicht davon überzeugen, warum der zweite Code besser ist als der erste. Die Ausführung des zweiten Codes würde definitiv mehr Zeit in Anspruch nehmen.
Der einzige Grund für die Verwendung des zweiten Codes kann sein, dass er eine bessere Lesbarkeit bietet. Wenn die Funktion jedoch mehrmals aufgerufen wird, verlangsamt die zweite Funktion dann nicht die Laufzeit des Dienstprogramms, das sie aufruft?
Was denkst du darüber?
switch
scheint angemessener zu sein alsif-else
). Aber irgendwann wird es problematisch. Der Hauptvorteil der Verwendung einer Karte besteht darin, dass Sie sie aus einer Datei, einer Tabelle usw. laden können. Wenn Sie die Eingabe in die Karte fest codieren, wird über einen Switch nicht viel Wert angezeigt.