zHz00 Untitled

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

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

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

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

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

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

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

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

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

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

URL
Периоды блуда у него сменяются покаяниями в церкви, пер...
Я тут проверяю задания на курсах эсперанто (http://www.ik...
Жизнь весьма непредсказуемая штука.... Вышел в середине...
Где те милые времена, когда на Халяве.Ру у меня была стра...
в белгородском проезде открылась кофейня-цирюльня, интере...
Внутренние и внешние противоречия, что впрочем, ничему не...

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