Ho notato che anche quando si paga rispetto al singolo principio di responsabilità dell'OOD, a volte le classi diventano ancora grandi. A volte l'accesso alle variabili membro direttamente nei metodi sembra avere uno stato globale e molte cose esistono nell'attuale ambito. Solo osservando il metodo attualmente in uso, non è più possibile determinare da dove provengono le variabili inviduali accessibili nell'ambito corrente.Accedere direttamente alle variabili membro o passare come parametro?
Quando collaboravo con un amico ultimamente, mi sono reso conto di scrivere molto più codice verboso di lui, perché ho passato le variabili membro ancora come parametri in ogni singolo metodo.
Questa cattiva pratica?
edit: Esempio:
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; }
};
Se le tue lezioni sono troppo grandi dividerle. Se hai una variabile membro usalo. Se non stai usando le variabili membro in un metodo dovrebbe probabilmente essere 'statico', ma farlo sembra strano. – Flexo
Scusami, mi sembra di avere un piccolo problema con il tuo inglese. Passi le variabili membro come parametri? Variabili membro pubblico? O nuovi valori per queste variabili membro? Sono un po 'confuso. – ATaylor
Mi dispiace di non averlo capito. Quando si implementa un algoritmo, di solito reiterro i parametri necessari nella firma del metodo, sebbene i dati richiesti dall'algoritmo possano essere effettivamente estratti direttamente dalle variabili membro. Supponiamo che tu abbia una classe, che aggiunge due numeri e ha i 2 numeri aeb come variabili membro. Quindi, invece di avere un metodo di aggiunta privato con parametri zero, definirei comunque una funzione prendendo 2 argomenti int. In questo modo potrei in seguito riutilizzare l'algoritmo anche al di fuori di una classe. – Tom