Как называть параметры для функции
Я сейчас пишу код в команде, скинул своему коллегу функцию:
typedef struct s_max
{
int x;
int y;
int count;
} t_max;
t_max max_count(t_max max, int x1, int y1, int count1)
{
if (count1 > max.count)
{
max.count = count1;
max.x = x1;
max.y = y1;
}
return (max);
}
Он её исправил и сказал, что в ООП так делают:
t_max max_count(t_max max, int x, int y, int count)
{
if (count > max.count)
{
max.count = count;
max.x = x;
max.y = y;
}
return (max)
}
Имеет ли смысл писать код так? Мне показалось, что можно запутаться в том, где переменная, которую мы передали, и не эта переменная. Это нормальный тон?
Ответы (2 шт):
Считаю вполне нормально, сам так делаю и у других видел. Но в ООП обычно при обращении к "глобальным переменным" класса пишут this.x. На простом же С чтобы не спутать глобальную и локальную переменную, возможно лучше будет давать переменным разные имена.
В данном случае все переменные локальные и обозначив переменную как х1 можно предположить, что где-то должна быть и х2 (например координаты линии), на деле же у нас только одна точка в функции.
А вообще же в командной работе придется подстраиваться под команду, чтобы всем было привычнее и понятнее.
Для того, чтобы не было путаницы, идентификаторы должны быть максимально осмысленны.
В данном случае наличие индекса x1, y1 на интуитивном уровне подсказывает, что где-то должны быть x2, y2. Поэтому правка вашего коллеги вполне оправдана.
Если есть твердое желание разделить имена параметров от остальных идентификаторов, то есть несколько способов.
Например, если функция max_count выполняется в цикле несколько раз, то можно было бы назвать параметры xi, yi или new_x, new_y или current_x, current_y и тому подобное.
Также в командах может быть выбран префикс для имен параметров. В Delphi правилом хорошего тона является использовать префикс A: AX, AY, ACount.
В разных проектах я встречал префиксы P, P_ и просто _.