me di cuenta de que, incluso cuando se paga el respeto al principio de la responsabilidad individual de OOD, a veces las clases todavía crecen grandes. A veces, el acceso a las variables miembro directamente en los métodos se siente como tener un estado global, y existen muchas cosas en el alcance actual. Con solo mirar el método en el que se está trabajando actualmente, ya no es posible determinar de dónde provienen las variables inviduales disponibles en el ámbito actual.¿Tiene acceso directo a las variables miembro o pasa como parámetro?
Cuando se trabaja junto con un amigo últimamente, me di cuenta de que escribo código mucho más prolija que él, porque yo paso variables miembro todavía como parámetros en cada método único.
¿Es esta una mala práctica?
edición: ejemplo:
class AddNumbers {
public:
int a, b;
// ...
int addNumbers {
// I could have called this without arguments like this:
// return internalAlgorithmAddNumbers();
// because the data needed to compute the result is in members.
return internalAlgorithmAddNumbers(a,b);
}
private:
int internalAlgorithmAddNumbers(int sum1, int sum2) { return sum1+sum2; }
};
Si sus clases son demasiado grandes, divídalas. Si tiene una variable miembro, úselo. Si no está utilizando variables miembro en un método, probablemente debería ser 'estático', pero hacer eso suena extraño. – Flexo
Disculpe, parece que tengo un ligero problema con su inglés. ¿Usted pasa las variables miembro como parámetros? ¿Variables de miembros públicos? O nuevos valores para estas variables miembro? Estoy un poco confundido. – ATaylor
Perdón por no haber sido claro en eso. Cuando implemento un algoritmo, por lo general vuelvo a iterar los parámetros que toma en la firma del método, aunque los datos que el algoritmo requiere se pueden extraer directamente de las variables miembro. Supongamos que tiene una clase, que agrega dos números, y tiene los 2 números a y b como variables de miembro. Entonces, en lugar de tener un método de adición privado con cero parámetros, aún definiría una función tomando 2 argumentos int. De esta manera, podría reutilizar el algoritmo también fuera de una clase. – Tom