Сделать переменную недоступной в части кодов - PullRequest
1 голос
/ 24 марта 2011

Время от времени я хочу в качестве проверки безопасности проверять, что переменная v не используется ни в какой части кода, ни в оставшейся части какой-либо функции, даже если она все еще видна в области видимости. этой функции / части кода. Например:

int x;
// do something with x 
DEACTIVATE(x);
// a portion of code which should not use x
ACTIVATE(x);
// do something else with x

Есть ли хороший способ выполнить такой тип проверки во время компиляции?

ПРИМЕЧАНИЕ : я знаю, что всегда следует использовать как можно меньшую область видимости для каждой переменной, но бывают случаи, когда доведение этой практики до крайности может стать громоздким, и такой инструмент будет быть полезным.

Спасибо!

Ответы [ 3 ]

3 голосов
/ 24 марта 2011

Лучший способ добиться этого - на самом деле иметь небольшие области в вашем коде, то есть использовать короткие, сфокусированные методы, которые делают только одну вещь .Таким образом, вы, как правило, имеете несколько локальных переменных для каждого отдельного метода, и они автоматически выходят за пределы области действия, когда они вам не нужны.Лучшее долгосрочное решение состоит в том, чтобы реорганизовать их, выделив меньшие части функциональности в отдельные методы.Большинство современных IDE имеют поддержку автоматического рефакторинга, которая снижает риск появления ошибок при таких изменениях - хотя, конечно, лучше всего иметь надлежащий набор модульных тестов, чтобы убедиться, что вы ничего не сломали. Чистый код .

1 голос
/ 24 марта 2011

Использование

#define v @
..
#undef v

Это должно быть сделано, поскольку @ с очень низкой вероятностью конфликтует с любым другим именем переменной, ключевым словом или оператором.

0 голосов
/ 24 марта 2011

Как я знаю, нет такой проверки компиляции. Может быть, вы можете проверить это самостоятельно, используя grep. Я думаю, что лучший способ - разделить вашу функцию на две функции. Один использует переменную, а другой не видит переменную. Это одна из причин, почему нам нужны функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...