Ich habe eine Funktion, die ein Verb im Latein mit dem Wort (Objekt), Stimme (String) und Zeit (String) konjugiert. Als Referenz sind aktiv und passiv die Stimmen und dann präsent, unvollkommen etc ... sind die Zeitformen.Wie kann ich meine switch-Anweisung DRY, die in jedem Szenario fast die gleiche Sache macht?
Im Grunde haben meine verschachtelten Switch-Anweisungen nur unterschiedliche Funktionen mit sehr ähnlichen Namen und Zwecken und ich frage mich, ob es einen Weg gibt, effizienter zu machen, an den ich nicht denke, weil es sehr redundant und klobig erscheint.
function getChart(word, voice, tense) {
//Root word variables
var inf = word.inf;
var pp3 = word.pp3;
var pp4 = word.pp4;
var conj = word.conj;
//If voice is active go to the active charts for the tense
//If voice is passive go to the passive charts for the tense
switch(voice) {
case "Active":
switch(tense) {
case "Present":
activePresentConj(inf, conj);
break;
case "Imperfect":
activeImperfectConj(inf, conj);
break;
case "Future":
activeFutureConj(inf, conj);
break;
case "Perfect":
activePerfectConj(pp3);
break;
case "Plu Perfect":
activePluPerfectConj(pp3);
break;
case "Future Perfect":
activeFuturePerfectConj(pp3);
break;
default:
return null;
}
break;
case "Passive":
switch(tense) {
case "Present":
passivePresentConj(inf, conj);
break;
case "Imperfect":
passiveImperfectConj(inf, conj);
break;
case "Future":
passiveFutureConj(inf, conj);
break;
case "Perfect":
passivePerfectConj(pp4);
break;
case "Plu Perfect":
passivePluPerfectConj(pp4);
break;
case "Future Perfect":
passiveFuturePerfectConj(pp4);
break;
default:
return null;
}
break;
default:
return null;
}
}
Wenn der Code vollständig ist und funktioniert, sollte er im Code Review veröffentlicht werden. Diese Website dient hauptsächlich zur Reparatur von kaputten Code. Wenn Sie die fehlenden Funktionen hinzufügen, wäre das besser dort drüben. – Carcigenicate