информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
За кого нас держат?Где водятся OGRыАтака на Internet
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Линуксовый ботнет, распространяющийся... 
 Конец поддержки Internet Explorer 
 Рекордное число уязвимостей в 2021 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Ну это все на самом деле происходило при обработке нажатия... 26.08.09 02:00  Число просмотров: 2609
Автор: Heller <Heller> Статус: Elderman
<"чистая" ссылка>
> Вот только сотрудника надо бы лишить премии за такое.
> Нельзя было сделать if (x) {doFirst(); break;} с
> "проваливанием" в case 2 по !x ?
Ну это все на самом деле происходило при обработке нажатия кнопок в диалоге.

>
> Такими "оптимизациями" обычно любят заниматься недавние
> школьники.

Тот же самый парень, что и здесь: http://bugtraq.ru/forum/full/2008/humor/152034.html в последнем абзаце. Ему сорок и он уже полтора месяца как уволен :-\
<programming>
[C++, слегка весело] Увидел сегодня в коде 25.08.09 23:02  
Автор: Heller <Heller> Статус: Elderman
<"чистая" ссылка>
В коде одного сотрудника углядел сегодня такую конструкцию (опечатки нет):

switch (n) {
    case 1:
        if (x)
            doFirst();
        else
    case 2:
        if (y)
            doSecond();
        else
            doThird();
        break;
}

---

Я лично о возможности такой конструкции не знал, остальные сотрудники тоже. Оригинальный switch содержал десяток кейсов в таком стиле.
[C++] Чел любит goto 19.09.09 15:35  
Автор: ryo-oh-ki Статус: Незарегистрированный пользователь
Отредактировано 19.09.09 15:36  Количество правок: 1
<"чистая" ссылка>
Чел любит goto, но ему запретили их использовать, потому он изнасиловал switch. :-)))) Табу на goto касается именно читабельности программ, вышеприведённый код действительно сложно читать. Единственно приемлимым случаем его (goto) использования можно считать "сбор" всех путей выполнения в одну точку в пределах функции, например, переход на обработчик ошибок в её хвосте.
Проект закрыть. Девелопера отправить учиться. 05.09.09 05:06  
Автор: void <Grebnev Valery> Статус: Elderman
<"чистая" ссылка>
Я когда писал что то типа компилятора си натыкался на кучу подобных нюансов 26.08.09 01:30  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> Я лично о возможности такой конструкции не знал, остальные
> сотрудники тоже. Оригинальный switch содержал десяток
> кейсов в таком стиле.

switch это фактически просто goto, а case - метка для этого goto. Можно вставлять в циклы, уловия и пр.. Все тело switch-а линейно (поэтому надо делать break-и, если не хочешь провалиться в следующий case).

Вот только сотрудника надо бы лишить премии за такое. Нельзя было сделать if (x) {doFirst(); break;} с "проваливанием" в case 2 по !x ?

Такими "оптимизациями" обычно любят заниматься недавние школьники.
Ну это все на самом деле происходило при обработке нажатия... 26.08.09 02:00  
Автор: Heller <Heller> Статус: Elderman
<"чистая" ссылка>
> Вот только сотрудника надо бы лишить премии за такое.
> Нельзя было сделать if (x) {doFirst(); break;} с
> "проваливанием" в case 2 по !x ?
Ну это все на самом деле происходило при обработке нажатия кнопок в диалоге.

>
> Такими "оптимизациями" обычно любят заниматься недавние
> школьники.

Тот же самый парень, что и здесь: http://bugtraq.ru/forum/full/2008/humor/152034.html в последнем абзаце. Ему сорок и он уже полтора месяца как уволен :-\
у Страуструпа есть пример похожей техники 25.08.09 23:13  
Автор: dl <Dmitry Leonov>
Отредактировано 25.08.09 23:21  Количество правок: 3
<"чистая" ссылка>
...в упражнениях к главе про выражения:
int n=(count+7)/8;
switch(count%8){
case 0: do{ *to++ = *from++;
case 7: *to++ = *from++;
case 6: *to++ = *from++;
case 5: *to++ = *from++;
case 4: *to++ = *from++;
case 3: *to++ = *from++;
case 2: *to++ = *from++;
case 1: *to++ = *from++;
}while( --n >0);
}

---
Хотя это практически классика (http://en.wikipedia.org/wiki/Duff%27s_device), дающая какой-то выигрыш в скорости, в других случаях за такой код надо убивать мучительной смертью.
Прикольно, а почему кусок программного кода назвали "устройством", "device"? ;) 07.09.09 12:56  
Автор: HandleX <Александр М.> Статус: The Elderman
<"чистая" ссылка>
Все проще: чувак не подозревает о cуществовании break; 26.08.09 04:59  
Автор: Zef <Alloo Zef> Статус: Elderman
<"чистая" ссылка>
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2022 Dmitry Leonov   Page build time: 1 s   Design: Vadim Derkach