Я бы написал это как
var failed = false;
if (a) doA();
else if (b) doB();
else if (c) doC();
else failed = true;
if (!failed) done();
Мне не нравится устанавливать переменную, например done
, сначала в значение true, а затем отменять ее, потому что работа не выполняется до запуска условия, поэтомувыглядит нелогично.
Мне также не нравится опция переключения регистра, потому что условия 'a', 'b', 'c' не обязательно являются взаимоисключающими;Каскад if ... else if ... else поддерживает неисключительные условия, но switch () может не зависеть от языка.Например, вы не можете преобразовать каскадирование, если ... еще нужно переключить в C ++.
Я думаю, что определенно важно удалить несколько точек вызова to done (), потому что это избыточность, а затем проблема обслуживания, если сделано (), напримерполучает параметры.