К выбору имен переменных нужно подходить ответственно. Неудачно выбранное название переменной может создать у читателя ошибочное представление о ее назначении и привести к неправильному пониманию логики программы.
square (площадь), чем var103 (неизвестно что).
vv сначала содержит
объем, потом вес, а потом высоту, то это запутает и читателя, и вас. Некоторые программисты пытаются так делать для экономии памяти, но в этом нет никакого смысла.
Объявление новой переменной "бесплатно". Если старая переменная не
используется в программе, то компилятор может автоматически связать с ней новое имя, то есть никакого лишнего использования памяти не произойдет.
_. Например, piece_value. i, j, k и др. не следует использовать кроме как в циклах.coll (две буквы L) и col1 (буква L и цифра 1). #define, перечисления enum.
int buffer[256];
// ...
void process_command(int command) {
switch(command) {
case 1:
for(int k = 0; k < 256; k++)
buffer[k] = 0;
break;
case 2:
if(buffer[0] == 0) {
// ...
}
}
}
#define BUFFER_SIZE 256
typedef enum {CMD_CLEAR = 1, CMD_PRINT = 2} CommandType;
// ...
int buffer[BUFFER_SIZE];
// ...
void process_command(CommandType command) {
const int blank_value = 0;
switch(command) {
case CMD_CLEAR:
for(int k = 0; k < BUFFER_SIZE; k++)
buffer[k] = blank_value;
break;
case CMD_PRINT:
if(buffer[0] == blank_value) {
// ...
}
}
}
Посмотрим на исходный вариант этого фрагмента программы (плохой).
Здесь используются константы 256, 0, 1 и 2 для обозначения
длины массива buffer, начального значения элемента этого массива, команды ОЧИСТИТЬ и команды ПЕЧАТЬ, соответственно.
Может ли читатель, глядя на левый код, догадаться, что константа 1 означает команду ОЧИСТИТЬ? Без анализа кода – нет.
Можно ли сказать, какие значения допустимы для параметра command функции process_command? Без анализа кода этого не сделать,
так как аргумент объявлен целочисленным. Какой смысл имеет константа 0, которая четыре раза появляется в этом коде?
Улучшенный вариант этого фрагметна отличается следующим. Во-первых, размер буфера определен директивой #define. В случае необходимости изменения
размера буфера это можно сделать исправив одну строчку – директиву #define. Изменение будет автоматически применено во всех местах,
где используеся имя BUFFER_SIZE.
В исходном варианте программы потребовалось бы просмотреть весь ее код и заменить 256 на новое значение. В общем случае константа 256 может
появляться много раз и в нескольких смыслах, так что заменять нужно только некоторые вхождения, что обычно является причиной возникновения
сложно обнаруживаемых ошибок, когда в некоторых местах программы остается старое значение.
Во-вторых, для обозначения команд введен тип-перечисление CommandType. Это позволяет объявить формальный параметр функции с правильным типом,
который допускает только два значения, и использовать символьные имена CMD_CLEAR и CMD_PRINT вместо соответствующих числовых констант.
В-третьих, "пустому" значению 0 присвоено явное символьное обозначение blank_value. Это дает возможность читателю понять смысл
константы 0.