Закоулки мозга

[@McConnell2004]

Инициализация переменных

  • В каждом ли методе проверяется корректность входных параметров?
  • Переменные объявляются около места их использования в первый раз?
  • Инициализировали ли вы переменные при их объявлении, если такое возможно?
  • Если переменные невозможно объявить и инициализировать одновременно, вы инициализировали их около места использования в первый раз?
  • Правильно ли инициализируются счетчики и аккумуляторы? Выполняется ли их повторная инициализация, если она необходима?
  • Осуществляется ли правильная повторная инициализация переменных в коде, который выполняется более одного раза?
  • Код компилируется без предупреждений? (И задали ли вы самый строгий уровень диагностики?)
  • Если язык поддерживает неявные объявления переменных, постарались ли вы предотвратить возможные проблемы?

Другие общие вопросы использования данных

  • Все ли переменные имеют как можно меньшую область видимости?
  • Являются ли обращения к переменным максимально сгруппированными как в плане интервала между обращениями, так и в плане общего времени жизни?
  • Соответствуют ли управляющие структуры типам данных?
  • Все ли объявленные переменные используются?
  • Все ли переменные связываются в подходящее время, т. е. соблюдаете ли вы разумный баланс между гибкостью позднего связывания и соответствующей ему повышенной сложностью?
  • Каждая ли переменная имеет одну и только одну цель?
  • Не имеют ли какие-нибудь переменные скрытого смысла?

Ключевые моменты

  • Неграмотная инициализация данных часто приводит к ошибкам. Описанные в этой главе способы инициализации позволят избежать проблем, связанных с неожиданными первоначальными значениями переменных.
  • Минимизируйте область видимости каждой переменной. Группируйте обращения к переменным. Старайтесь делать переменные локальными для методов или классов. Избегайте глобальных данных.
  • Располагайте команды, использующие одни и те же переменные, как можно ближе друг к другу.
  • Раннее связывание ограничивает гибкость, но минимизирует сложность программы. Позднее связывание повышает гибкость, но за это приходится расплачиваться повышенной сложностью.
  • Используйте каждую переменную исключительно с одной целью.