Каждый, кроме начинающего программиста, знает, что switch
быстрее, чем if..else
, но switch
не может заменить каждое составное выражение, которое вы можете вставить в оператор if
(например, два выражения логическое И)
Кроме того, если вы говорите о глубоко вложенном коде, подобном этому
function foo()
{
if ( /* expr1 */ )
{
// code
if ( /* expr2 */ )
{
// code
if ( /* expr3 */ )
{
// code
if ( /* expr4 */ )
{
// code
}
}
}
}
}
Тогда все, что я могу сказать, пожалуйста, прекрати это делать. Имейте некоторые защитные условия, которые заставят функцию выйти рано вместо этого. Вот вышесказанное переписано с этим стилем.
function foo()
{
if ( !/* exp r1 */ )
{
return;
}
// code 1
if ( !/* expr 2 */ )
{
return;
}
// code 2
if ( !/* expr 3 */ )
{
return;
}
// code 3
if ( !/* expr 4 */ )
{
return;
}
// code 4
}
Конечно, оба из них в реальном приложении, возможно, могут быть реорганизованы еще лучше, добавив больше функций.