Есть довольно несколько кодов IRC-сервера
Я работаю над небольшим IRC-клиентом для Adobe AIR , и я начал с того, что сначала поддерживал только несколько из них, а затем заявление о переключении не казалось плохой идеей. Но, поскольку я поддерживаю все больше и больше, оператор switch становится длиннее, и кажется, что он немного вышел из-под контроля. Одна проблема заключается в том, что я сохранил код обработки низкого уровня IRC в файле сам по себе, чтобы его можно было использовать повторно. Я хотел бы сохранить все в одном файле. Другая проблема заключается в том, что блоки кода в операторах switch в настоящее время предполагаются как часть этого класса IRC, и этот оператор часто используется. Внесение изменений сейчас будет большой работой и введением регрессий. Единственная проблема на самом деле - мое отвращение к длинному заявлению о переключении, в противном случае вы знаете, что оно работает, и его легко читать, но на самом деле это не усложняет его обслуживание. Но это такое длинное заявление о смене. И функция, которая содержит оператор switch, тоже очевидно длинная. : //
Одна вещь, которую я иногда делаю вместо переключателя, это то, что я определяю функции, которые названы в соответствии со значением, которое оценивает переключатель. Вместо выключателя:
switch ( val ) {
case: "alert":
alert( "yo" );
break;
}
Я проверяю, существует ли метод в области видимости, и выполняю его:
obj.alert = function ( ) {
alert( "yo" );
}
if ( val in obj && isFunction( obj[ val ] ) ) {
obj[ val ]( );
}
Но, опять же, в этом случае я чувствую, что регрессии имеют высокий риск, и я не уверен, что стоит усилий, чтобы избежать длинного оператора switch ради его длины.