- 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. На мой взгляд изящный подход =)
guest 25.05.2010 09:01 # 0
shurikroger 25.05.2010 09:02 # 0
shurikroger 25.05.2010 12:08 # 0
Lure Of Chaos 25.05.2010 09:06 # 0
guest 25.05.2010 21:27 # 0
wvxvw 25.05.2010 11:05 # 0
guest 25.05.2010 11:06 # −2
wvxvw 25.05.2010 11:23 # 0
Практически все парсеры чего угодно, которые я в нем видел используют что-то похожее.
cheef 25.05.2010 12:16 # 0
turdman 25.05.2010 11:27 # +1
Но switch(true) - бессмысленное удаление гланд через жопу.
wvxvw 25.05.2010 11:49 # 0
Глупо потому что избыточно
Не вижу преступления. То же самое, что и кучу if-else написать. Скорость зависит от интерпретатора, но я сильно сомневаюсь, что вообще будет разница, а даже если будет, то на один-два опкода, выполняемые всего один раз... все равно, что лишнюю локальную переменную создать для удобства. В виртуальной машине AS1 / AS2, например, такой код скомпилировался бы идентично набору из if-else.
turdman 25.05.2010 12:47 # 0
Против
(Разве-что ради проваливающихся case'ов (без break'а, не знаю как это официально называется) с кодом)
wvxvw 25.05.2010 12:51 # 0
И мне вариант со свитчем легче читать. Так что - дело вкуса.
Death 25.05.2010 22:21 # −3
Lure Of Chaos 25.05.2010 22:38 # +2
guest 27.05.2010 16:10 # 0
меня такой подход устраевает - я примитивен (((
rO_ot 28.05.2010 19:36 # 0
rO_ot 28.05.2010 19:37 # 0