- 1
- 2
- 3
- 4
- 5
- 6
- 7
switch(true)
{
case tag1: /*тут обработка*/break;
case tag2: /*тут обработка*/break;
case tag3: /*тут обработка*/break;
case tag4: /*тут обработка*/break;
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+144
switch(true)
{
case tag1: /*тут обработка*/break;
case tag2: /*тут обработка*/break;
case tag3: /*тут обработка*/break;
case tag4: /*тут обработка*/break;
}
Короче это был кусок парсера SGML файла, который в зависимости от встреченного тега выполнял действия. Этот код недословный, привожу чтоб показать как использовалась конструкция switch. На мой взгляд изящный подход =)
Практически все парсеры чего угодно, которые я в нем видел используют что-то похожее.
Но switch(true) - бессмысленное удаление гланд через жопу.
Глупо потому что избыточно
Не вижу преступления. То же самое, что и кучу if-else написать. Скорость зависит от интерпретатора, но я сильно сомневаюсь, что вообще будет разница, а даже если будет, то на один-два опкода, выполняемые всего один раз... все равно, что лишнюю локальную переменную создать для удобства. В виртуальной машине AS1 / AS2, например, такой код скомпилировался бы идентично набору из if-else.
Против
(Разве-что ради проваливающихся case'ов (без break'а, не знаю как это официально называется) с кодом)
И мне вариант со свитчем легче читать. Так что - дело вкуса.
меня такой подход устраевает - я примитивен (((