La premessa utilizza un linguaggio (ad es. C #, javascript) che passa un oggetto per riferimento in un metodo.
Supponiamo che ci sia un oggetto "Player" che ha una proprietà "Level" e che un metodo prende Player come parametro e la sua funzione è di aumentare il livello del giocatore di 1.
Il metodo può essere progettato come qualcosa (c # sintassi):
void AddLevelBy1(Player player)
{
player.Level +=1;
}
Il problema era che questo metodo ha cambiato il valore dell'argomento e non sono riuscito a trovare un modo generico per indicare (o potrebbe impedire?).
Si potrebbe ottenere qualche suggerimento dal nome del metodo "AddLevelBy1". Ma un modo del genere non è affidabile e se il metodo è il nome "pippo", allora diventa ancora più ambiguo.
Quindi c'è una soluzione / convenzione per questo caso (indicare se gli argomenti vengono modificati)? O una tale progettazione del metodo era considerata una cattiva pratica?
Aggiunto:
Prova a descrivere il mio caso più chiaramente:
-
Ho un oggetto "Player" che non è stato definito da me (non può cambiare).
-
Ho scritto un metodo (AddLevelBy1 () in questo esempio) che accetta "Player" come parametro (so cosa è successo).
-
Trasmetto questo "Player" anche ad altri metodi (es. foo ()) che non sono stati scritti da me (quindi non è possibile sapere se il "Player" è stato modificato).
Grazie per alcune risposte di seguito, ma se i codici fossero stati progettati nel modo descritto sopra.
Ho aggiunto una demo del caso che ho descritto: link