Un uso di "dichiarare le variabili come membri" è per gli attributi . Essendo le cose che descrivono la cosa che stai modellando, forse, qualche consumatore esterno vorrebbe chiedere. Ad esempio il nome e l'età di una persona sono esempi di attributi. Questi attributi sono solitamente modificati usando un metodo setter e letti usando un metodo getter.
Gli attributi fanno parte dello "stato" di un oggetto. Ma anche altre variabili oltre agli attributi fanno parte dello stato.
Il secondo uso possibile è per quei tipi di variabili. Tali variabili contengono informazioni che di solito vengono lette e scritte da diversi metodi di classe.
Esempi:
- un contatore interno (non i contatori nei cicli for)
- una connessione al database aperta
- un elenco di articoli elaborati
- una bandiera che indica che l'oggetto si trova in un determinato stato (in attesa, chiuso, aperto, disponibile, ecc.)
Queste variabili sono candidate per essere variabili membro anche quando nessuno al di fuori della classe ha bisogno di conoscerle.
Ciò che dici del passaggio di tutto come parametri ai metodi indica che tali metodi non sono coerenti con la classe e che dovrebbero essere statici.
Forse non stai modellando i concetti del mondo reale in un modo OO e stai semplicemente usando le classi come applicazioni, cioè l'applicazione è la classe, ed è per questo che non trovi naturale dichiarare le variabili dei membri.
Un altro suggerimento è che se scopri di passare costantemente lo stesso parametro tra più metodi, è probabile che quel metodo debba essere un membro.
Recomendation:
Utilizza le classi per modellare entità reali, come BankAccount, Player, Chessman, ecc. Non creare classi giganti con un metodo principale gigante e molte funzioni di aiuto.