Я имею дело с большой базой кода, в которой повсюду используется следующая конструкция
class MyClass
{
public:
void f(int x);
private:
int x;
};
void MyClass::f(int x)
{
'
'
this->x = x;
'
'
}
Лично я всегда использовал и, следовательно, предпочел бы форму
class MyClass
{
public:
void f(int x);
private:
int _x;
};
void MyClass::f(int x)
{
'
'
_x = x;
'
'
}
Причины, по которым я предпочитаю последнее, заключаются в том, что он более лаконичен (меньше кода = меньше потенциальных ошибок), и что мне не нравится иметь несколько переменных с одинаковым именем в области видимости одновременно, когда я могу этого избежать. Тем не менее, в наши дни я все чаще и чаще сталкиваюсь с прежним использованием. Есть ли у второго подхода какие-то преимущества, о которых я не подозреваю? (например, влияние на время компиляции, использование с шаблонным кодом и т. д.) Достаточно ли значительны преимущества одного из подходов, заслуживают ли рефакторинга другого? Причина, по которой я спрашиваю, заключается в том, что, хотя мне не нравится второй подход, присутствующий в коде, объем усилий и связанный с этим риск внесения дополнительных ошибок не совсем заслуживают рефакторинга.
this
, чтобы избежать двусмысленности (и не было бы необходимости, если бы параметр был названy
). - person Groo   schedule 29.06.2009this
(Google для StyleCop SA1309). Любой другой способ - это просто предпочтительный стиль программиста, и он может меняться от одного источника к другому. ‹Subjective› Не поймите меня неправильно - я всегда ставлю перед закрытыми полями знак подчеркивания. :) ‹/subjective› - person Groo   schedule 29.06.2009m_varName
. Итак, если у вас есть переменная, которая равнаvarName
в параметре, вы можете использовать ее какm_varName = varName;
. Это делает его читабельным, вы видите, какие из переменных являются членами, очень помогает с автозаполнением при написании кода, и это не зарезервированное имя. - person JohnJohn   schedule 31.01.2015