2017-12-26 8 views
0

長いswitch文をリファクタリングと私はより多くの練習文で、それを交換する必要があり、任意のヘルプしてください:NodeJS:私は長い<strong>スイッチ</strong>文を持っている

switch (global.testSuite) { 
    case "cleanCache": 
     testSenarios.cleanCache(); 
     break; 
    case "setting": 
     testSenarios.setting(); 
     break; 
    case "installExtensions": 
     testSenarios.installExtensions(); 
     break; 
    case "addIndividualContact": 
     testSenarios.addIndividualContact(); 
     break; 
    case "addContact": 
     testSenarios.addContact(); 
     break; 
    case "add": 
     testSenarios.add(); 
     break; 
} 
+7

'testSenarios [global.testSuite]()' –

答えて

11

あなたはtestSenariosでのみ有効なプロパティを持っている場合は、チェックを行い、括弧で関数をproperty accessorと呼ぶことができます。

if (global.testSuite in testSenarios) { 
    testSenarios[global.testSuite](); 
} 

それとも、機能せずに複数のプロパティを持っている場合は、代わりにfunctionをチェックすることがあります。

if (typeof testSenarios[global.testSuite] === 'function') { 
    testSenarios[global.testSuite](); 
} 
+0

ありがとう@Nina –

+0

@MohammadTrabelsi、よろしくお願いします! –

-2

スイッチケースは、キーと値のペアを持つオブジェクトで簡単に置き換えることができます。

//Define a object 
const testSuite = { 
    cleanCache : testSenarios.cleanCache, 
    setting : testSenarios.setting 
    ...... 
    .... 
} 

//Then Replace the switch-case block with a single call 
testSuite[global.testSuite]() 

デフォルトのケースを処理するために「デフォルト」キーを追加することもできます。

+3

オブジェクトを設定している間は、すべての関数を呼び出しています。そして、その関数を呼び出していません。 –

関連する問題