Разбор ошибок в программном коде, или как не надо программировать

Ниже описаны практические ошибки программистов из реальной жизни.
Ошибка 1. Использование имени переменной, которая уже используется в коде функции совершенно для других целей.
Пример ошибки 1.
Переменная1 = 0;
<код, где используется Переменная1 в качестве числа>
Переменная1 = «строка»;
<код, где используется Переменная1 в качестве строки>
<код, где используется Переменная1 в качестве числа> — ошибка времени выполнения
Как писать код, чтобы не было ошибки 1. Объявляя новую переменную, проверьте, нет ли в коде функции такой же в точности переменной.
Ошибка 2. Попытка обращения к переменной (на чтение), которая (переменная) не была инициализирована должным образом.
Пример 1 ошибки 2.
<цикл 1, где в теле цикла устанавливается значение Переменная2 (возможно, по какому-то условию)>
<код>
<код, где идёт обращение к Переменной2 на чтение> — ошибка времени выполнения, если программа не вошла в цикл 1 (не выполнились условия для входа в оператор инициализации Переменной2).
Пример 2 ошибки 2.
<условный оператор 1, где не во всех ветках устанавливается значение Переменная2>
<код>
<код, где идёт обращение к Переменной2 на чтение> — ошибка времени выполнения, если программа при обработке условного оператора 1 не вошла в ветку с инициализацией Переменной2 (не выполнились условия для входа в оператор инициализации Переменной2).
Как писать код, чтобы не было ошибки 2. Обращаясь к переменной на чтение, проверьте, всегда ли будет определено её значение исходя из программного кода выше. Достаточным условием для отсутствия ошибки 2 будет оператор инициализации Переменной2 в примере 1 — перед циклом 1, в примере 2 — перед условным оператором 1.
Ошибка 3. Выбор неправильного имени поля/переменной/объекта.
Пример 1 ошибки 3.
В справочнике Организации есть поле ДатаЗакрытия, которое по смыслу используется как «Дата закрытия периода». При этом сама организация может быть тоже закрыта (с прекращением деятельности), и по смыслу ДатаЗакрытия более подходит как раз к дате прекращения деятельности самой организации.
Данная ошибка не влечёт за собой ухудшение работы алгоритмов, но существенно затрудняет чтение/понимание программного кода программистом (иногда тем же самым, кто писал данный код несколько месяцев назад), т.е. влечет перерасход затрат времени на доработку/анализ программного кода.
Пример 2 ошибки 3.
Регистр РаспределениеНПпоОП — следовало его назвать без сокращений, а именно РаспределениеНалогаНаПрибыльПоОтветственнымПодразделениям
Пример 3 ошибки 3.
Переменная СуммаУпл — читая код, никогда не догадаешься, что на самом деле это СуммаУбытковПрошлыхЛет (УПЛ). Так как обычно под «Упл» понимается Уплачено.