私は単語(オブジェクト)、音声(文字列)、および時制(文字列)を与えられたラテン語の動詞を結合する関数を持っています。アクティブな参照と受動的なものは声であり、存在し、不完全なものなど...は時制です。各シナリオでほぼ同じことをするswitch文をどのようにDRYするのですか?
本質的に私のネストされたswitch文は、非常に似た名前と目的で別の機能を実行するだけです。私はそれが非常に重複していてclunkyのように思えないほど効率的にするいくつかの方法があるのだろうかと思いました。
すべてのヘルプは大歓迎し、ここに以下の私のコードであることになります。
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;
}
}
コードが完成して動作している場合は、Code Reviewに掲載する必要があります。このサイトは主に壊れたコードを修正するためのものです。不足している機能を追加すると、そこに投稿される方が良いでしょう。 – Carcigenicate