[@McConnell2004]
Инициализация переменных
- В каждом ли методе проверяется корректность входных параметров?
- Переменные объявляются около места их использования в первый раз?
- Инициализировали ли вы переменные при их объявлении, если такое возможно?
- Если переменные невозможно объявить и инициализировать одновременно, вы инициализировали их около места использования в первый раз?
- Правильно ли инициализируются счетчики и аккумуляторы? Выполняется ли их повторная инициализация, если она необходима?
- Осуществляется ли правильная повторная инициализация переменных в коде, который выполняется более одного раза?
- Код компилируется без предупреждений? (И задали ли вы самый строгий уровень диагностики?)
- Если язык поддерживает неявные объявления переменных, постарались ли вы предотвратить возможные проблемы?
Другие общие вопросы использования данных
- Все ли переменные имеют как можно меньшую область видимости?
- Являются ли обращения к переменным максимально сгруппированными как в плане интервала между обращениями, так и в плане общего времени жизни?
- Соответствуют ли управляющие структуры типам данных?
- Все ли объявленные переменные используются?
- Все ли переменные связываются в подходящее время, т. е. соблюдаете ли вы разумный баланс между гибкостью позднего связывания и соответствующей ему повышенной сложностью?
- Каждая ли переменная имеет одну и только одну цель?
- Не имеют ли какие-нибудь переменные скрытого смысла?
Ключевые моменты
- Неграмотная инициализация данных часто приводит к ошибкам. Описанные в этой главе способы инициализации позволят избежать проблем, связанных с неожиданными первоначальными значениями переменных.
- Минимизируйте область видимости каждой переменной. Группируйте обращения к переменным. Старайтесь делать переменные локальными для методов или классов. Избегайте глобальных данных.
- Располагайте команды, использующие одни и те же переменные, как можно ближе друг к другу.
- Раннее связывание ограничивает гибкость, но минимизирует сложность программы. Позднее связывание повышает гибкость, но за это приходится расплачиваться повышенной сложностью.
- Используйте каждую переменную исключительно с одной целью.