Здравствуйте, Janis, Вы писали:
J>Допусим, у нас есть класс A с переменной x. Как правило, для доступа к ней используются методы SetX и GetX:
..... J>Мне кажется, что это как-то связано с удобочитаемостью программ. А каково Ваше мнение?
Теперь представь, что тебе в функцию задания переменной захочется сделать значание по умолчанию?
class A
{
public:
int X () { return _x; }
void X (int x = 1) { _x = x; }
private:
int _x;
};
ты вызываешь функцию X(). Посторонний человек, читающий прогу, не сможет сразу "с наскоку" понять о чем речь. Нет, поймет конечно, но удобочитаемость пострадает.
Кроме того, достаточно часто в доках по стилям программирования вообще и по стилям кодирования в частности встречаю фразу о том, что имена функций должны содержать глагол. Опять же, в целях удобочитаемости...
Здравствуйте, Janis, Вы писали:
J>Допусим, у нас есть класс A с переменной x. Как правило, для доступа к ней используются методы SetX и GetX:
J>А почему не используется полиморфизм, вида:
J>Мне кажется, что это как-то связано с удобочитаемостью программ. А каково Ваше мнение?
ИМХО, фигня это все — как тебе удобнее так и пиши. Главное!!! пиши всегда одним способом.
Здравствуйте, Janis, Вы писали:
J>Допусим, у нас есть класс A с переменной x. Как правило, для доступа к ней используются методы SetX и GetX: J>А почему не используется полиморфизм, вида: J>
J>class A
J>{
J>public:
J> int X () { return _x; }
J> void X (int x) { _x = x; }
J>private:
J> int _x;
J>};
J>
J>Мне кажется, что это как-то связано с удобочитаемостью программ. А каково Ваше мнение?
Здравствуйте, Janis, Вы писали:
J>Допусим, у нас есть класс A с переменной x. Как правило, для доступа к ней используются методы SetX и GetX: J>
J>class A
J>{
J>public:
J> int GetX () { return _x; }
J> void SetX (int x) { _x = x; }
J>private:
J> int _x;
J>};
J>
J>А почему не используется полиморфизм, вида: J>
J>class A
J>{
J>public:
J> int X () { return _x; }
J> void X (int x) { _x = x; }
J>private:
J> int _x;
J>};
J>
J>Мне кажется, что это как-то связано с удобочитаемостью программ. А каково Ваше мнение?
А в C# вообще такой проблемы нет:
public class A
{
private int _x;
public X
{
get
{
return _x;
}
set
{
_x = value;
}
}
}
public class B
{
private A ma;
public int x;
public B()
{
ma = new A();
ma.X = 5;
x = ma.X * 10;
}
}
Здравствуйте, Aquary, Вы писали:
A>Теперь представь, что тебе в функцию задания переменной захочется сделать значание по умолчанию?
class A
{
public:
int X () { return _x; }
void X (int x = 1) { _x = x; } // не надо так делатьprivate:
int _x;
};
A>ты вызываешь функцию X(). Посторонний человек, читающий прогу, не сможет сразу "с наскоку" понять о чем речь. Нет, поймет конечно, но удобочитаемость пострадает.
Лично я не пойму И не только я, компилятор не поймёт тоже:
int _tmain(int argc, _TCHAR* argv[])
{
A a;
a.X(); // error: 'A::X' : ambiguous call to overloaded functionreturn 0;
}
В целом я согласен с Aquary.
ИМХО, лучше использовать имена с "Get"("Is" для булевых переменных) и "Set". Немного жаль, что в C++ нет пропертей.
Любая сложная технология неотличима от волшебства. (Артур Кларк)