zHz00 Untitled

вторник, 19 марта 2019
23:44 Классические фейлы: повторное использование переменных
У меня в программах часто используются переменные x, y, z. Для циклов.

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

Что же может пойти не так? Большинство циклов короткие, но не все. Сегодня я попался на том, что начало цикла с переменной икс было две страницы назад. А потом я внутри цикла с этой переменной организовал ещё один цикл с иксом.

Внутренний цикл, естественно, работал. А вот внешний -- нет. Он выполнялся неправильное количество раз из-за неправильного значения икса.

Как же от этого защититься?

1. Об'являть переменные специально для циклов:
for(int x=0;x<10;x++)

В голом Си это может не сработать (зависит от версии).

2. Перед использованием переменной, которую не об'явил только что, провести расследование, где она ещё встречается.

3. Не использовать такие переменные вовсе. Если переменная уже есть, сделать ещё одну. Как правило, проблем с нехваткой памяти сейчас не бывает. Если вам приходится до такой степени экономить память на микроконтроллере, то поставьте более крутой микроконтроллер.

@темы: Программирование, Фейлы

URL
Кому как, но меня походы в музеи несколько утомляют. Вспо...
Прохождение объема через плоскость дает на плоскости пуль...
Мне такая весна не нравится. Погоды стоят противные. Не...
Немного об окружающем мире... Все уже поняли, что Корея м...
Вещь тоже весьма специфическая, но есть. Местное населени...
Правила: скопируйте эту анкету к себе в дневник и выделит...

20.03.2019 в 00:29

20.03.2019 в 00:29
* с ужасом вспоминает времена, когда вместо итераторов приходилось использовать циклы *



А вообще, статический анализ кода вроде должен ловить такое?
URL

20.03.2019 в 00:51

20.03.2019 в 00:51
А, итераторы! Знаем-знаем! У них ещё бантик сбоку, да?

Статический анализ кода 100% поймал бы. Но:
а) я им не пользуюсь (а надо бы)
б) если я начну им пользоваться, то я припухну, т.к. придётся исправлять половину программы, потому что -- говнокод!
URL

20.03.2019 в 09:31

20.03.2019 в 09:31
Бантик будет там, куда я его передам! Можно и сбоку! =)
URL
Добавить комментарий

Расширенная форма

Подписаться на новые комментарии
Получать уведомления о новых комментариях на E-mail