Потрібно використовувати кожну змінну з єдиною метою. Іноді виникає спокуса використати одну змінну в двох різних місцях для розв’язування двох різних задач. Зазвичай, таким змінним доводиться давати невдале ім’я у відповідності з однією з її цілей, або використовувати для обох задач тимчасову змінну (наприклад, temp). Наприклад:
temp = Sqrt( b*b - 4*a*c);
root[0] = ( -b + temp ) / ( 2 * a );
root[1] = ( -b - temp ) / ( 2 * a );
...
temp = root[0];
root[0] = root[1];
root[1] = temp;
Тут складається враження, що змінні temp в першій частині програми і в другій якось пов’язані між собою, хоча це не так. Краще було б написати так:
discriminant = Sqrt( b*b - 4*a*c);
root[0] = ( -b + temp ) / ( 2 * a );
root[1] = ( -b - temp ) / ( 2 * a );
...
oldRoot = root[0];
root[0] = root[1];
root[1] = temp;
Потрібно уникати змінних, що мають прихований сенс. Навіть якщо змінна з подвійним сенсом зрозуміла автору програми, вона може бути незрозумілою іншим. Наприклад, якщо додатне число в змінній bytesWritten означає число байтів, записаних у вихідний файл, а від’ємне – номер диску, на який здійснюється запис, то отримуємо так звану "гібридну зв’язність" ("hybrid coupling"), що є недоліком програми. Тому, в даному випадку доцільно використовувати для кожної величини окрему змінну.
Потрібно переконатись в тому, що використовуються всі оголошені змінні. Доведено, що невикористання оголошених змінних веде до збільшення кількості помилок. Компілятор java, наприклад, видає попередження про невикористані змінні.