Is this a bad idea afterall, especially in a team environment?
Direi che è una pratica almeno discutibile che potrebbe portare a problemi, in particolare in un ambiente di squadra. Avendo lavorato in questo modo per un po 'di tempo, potresti aver sviluppato abitudini e comprensione che evitano i potenziali problemi, ma i membri del team probabilmente non capiranno le tue regole non scritte.
In particolare, sembra che tu stia essenzialmente praticando la programmazione procedurale in un ambiente orientato agli oggetti. Il punto degli oggetti è che contengono sia i dati che le operazioni su quei dati. Ad esempio, se si dice a draw (), ad esempio, non è necessario dirgli cosa disegnare - deve disegnare da sé. Se devi dirgli cosa disegnare, non stai sfruttando la potenza di OOP.
Un pericolo del tuo approccio è che i tuoi metodi non operano sui membri dell'oggetto, ma sui parametri. Se si passano tali parametri in base al valore, le eventuali modifiche apportate a tali parametri non si rifletteranno nelle corrispondenti variabili membro. Puoi risolvere il problema passando per riferimento, ma in tal caso il tuo codice potrebbe cambiare le variabili membro se questo è ciò che passi, ma non è ovvio che sia quello che sta succedendo. Peggio ancora, c'è la possibilità molto reale che il chiamante passi in qualcosa di diverso da una variabile membro, il che cambia davvero il significato di ciò che fa il metodo.
Is it like redundant or confusing
- Ridondante: sicuramente.
- Confusione: apparentemente non a te, ma sicuramente agli altri.
are there better ways?
Utilizza le variabili membro o le proprietà anziché i parametri nei metodi che sono destinati a operare sui dati memorizzati all'interno dell'oggetto. Utilizza i parametri per informazioni esterne all'oggetto.
Se hai difficoltà a discernere quali membri utilizzano un determinato metodo, prova uno dei seguenti:
-
Metti un commento vicino all'inizio del metodo che spiega cosa fa il metodo, elenca i membri interessati e forse descrive qualsiasi output.
-
Semplifica i tuoi metodi. Sono tutti per i commenti appropriati, ma il codice è molto più bello quando puoi scansionare velocemente il codice e avere una buona idea di cosa sta succedendo.
-
Smetti di preoccupartene. Un metodo dovrebbe utilizzare qualsiasi dato interno di cui ha bisogno per svolgere il proprio lavoro. Il codice al di fuori del metodo dovrebbe essere più interessato a cosa fa il metodo, non a come lo fa.