Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Разница между if, ? и switch/case (http://www.flasher.ru/forum/showthread.php?t=121698)

Psycho Tiger 20.02.2009 19:54

Разница между if, ? и switch/case
 
Интересна разница между ними с точки зрения производительности.
За все своё время программирования плодил тонны if`ов (если нужно), но очень редко пользовался switch/case`ом (мне сложнее его читать). Насколько такой подход был критичен с точки зрения производительности, или компилятор переведет все это в один и тот же байткод?

CrazyFlasher 20.02.2009 19:55

не проверял на скорость, но как раз таки для меня более чтиабельно switch case, чем "тонны if'ов"

etc 20.02.2009 19:57

switch в байткоде и есть тонна строгих if.

_Smirnoff 21.02.2009 00:17

Конструкция

Код AS3:

if (условие)
{
 
}
else if (условие)
{
 
}

вообще вымораживает.

switch/case более читабельней, ведь хороший программист - это тот, кто пишет код понятный другим программистам, а не машине.

iNils 21.02.2009 01:40

Условие условию рознь. switch для случаев, когда условий (с if) больше 2-3 (то есть пост _Smirnoff мимо, иначе слишком громоздко) и в switch можно описать лишь одну ОДНО условие, в иных случахя без if/else if некуда.

DarkLight 21.02.2009 02:19

Цитата:

switch/case более читабельней
для меня switch/case по сравнению с if/else нечитабелен из-за кучи break-ов (я пишу фигурную скобку на той же строке что if/else, а не на отдельной, возможно поэтому), и, соответственно, подлежит использованию, когда break нужен не везде, и тогда switch/case упрощает логику. Одно условие тоже ограничивает применимость. А так как конструкция по смыслу полностью аналогична группе строгих сравнений, я практически никогда ее не использую.

wvxvw 21.02.2009 02:36

Добавлю, что со swtich-case связано несколько багов компилятора, например использование E4X, такая конструкция не прочитается правильно:
Код AS3:

case "foo":
list = xml.(<Boolean>);
...

Нужно обязательно обернуть case "foo": { .... } фигурными скобками. И тогда это действительно выглядит дико :) Но я все равно больше switch-case люблю, потому что если много ифоф подряд - теряешься, какие из них связаны, а какие - нет.

etc 21.02.2009 07:32

_Smirnoff, неа, это как раз плохой программист. Хороший пишет понятно и для тех и для других.

ramshteks 21.02.2009 08:34

Код AS3:

if (условие)
{
 
}
else if (условие)
{
 
}

чем же не угодила эта конструкция? вполне даже не плохая, позволяющая уточнить условия если первое условие ложное. более плохим вариантом было бы сделать вот так

Код AS3:

if (условие)
{
 
}
 
if (условие)
{
 
}

или

Код AS3:

if (условие)
{
 
}
else
{
 
 if (условие)
{
 
}
 
}

на мой взгляд ваш "бесящий" вариант очень хорош, если нужно нумного уточнить условие для ложности первого условия

CrazyFlasher 21.02.2009 12:44

вообще огромное количество больших конструкций if (тоже самое и switch) в небольшом проекте это плохой тон и низкий уровень испрользования фишек ооп...имхо


Часовой пояс GMT +4, время: 21:10.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.