Для большей читабельности кода пришел к мысли что хорошо бы передавать поля класса в методы класса явно. Т.е. методы класса имеют прямой доступ к полям класса внутри себя и нет надобности передавать туда какие либо аргументы, связанные с классом, но я хочу это делать для читабельности. Приемлемая ли это практика?
Приемлемая ли это практика?
Это не запрещено, но это возврат к языку Си. Если Вам это кажется более читабельным, то Вы вполне можете так делать. Однако большинству так не кажется, иначе все давно бы так делали. По самой идее метода, метод работает с одними и теми же полями данных и не требует передачи поля в аргументах методов. Сравните:
Так делают все и в этом смысл классов и методов:
class a{
int a1;
int a2;
public:
void method1(){
//do smth with a1
}
void method2(){
//do smth with a2
}
};
Так не делает никто:
class a{
int a1;
int a2;
public:
void method(int a,bool flag){
if(flag==true){
//do smth with a1
}
if(flag==false){
//do smth with a2
}
}
};
Так тоже не делает никто, хотя бы потому, что есть лишняя передача аргумента, которая занимает время (то самое знаменитое penalty performance), а аргумент всегда передается один и тот же:
class a{
int a1;
int a2;
public:
void method1(int a1){
//do smth with a1
}
void method2(int a2){
//do smth with a2
}
};
Кроме того, в примерах номер 2 и номер 3 можно ошибиться в вызове, передав не тот аргумент в метод, например:
a aexample;
aexample.method(aexample.a1,false);//ошибка в вызове в примере 2
еще пример ошибки в передаче аргументов:
a aexample;
aexample.method1(aexample.a2);//ошибка в вызове в примере 3
В примере номер 1 ошибка в несоответствии параметров в вызове невозможна:
a aexample;
aexample.method1();//невозможно сделать ошибку в вызове метода1 в примере 1
aexample.method2();//невозможно сделать ошибку в вызове метода2 в примере 1
Учитывая, что вызовов много а метод пишется один раз, вероятность ошибок сильно возрастает.
Кроме того, для явной передачи через аргументы поля данных должны быть не privat а public, что тоже не поощряется.
Резюмируя, можно сказать, что нет смысла передавать поля данных в методы явным образом. Язык С++ предлагает гораздо более понятные и быстрые способы доступа к полям данных класса в рамках концепции класса и методов класса.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Задание у меня следующееЕсть класс часы и в нем содержится статическое поле "часовой пояс"