Sono un web dev (sviluppatore di giochi per hobby) e mi sono visto usare più volte il seguente paradigma. (Sia nello sviluppo dell'architettura del server che nel lavoro con i videogiochi.) Sembra davvero brutto, ma non conosco un lavoro. Darò un esempio in game dev, perché è dove l'ho notato di recente. Questo è un gioco di ruolo su cui ho lavorato. Ogni volta che viene lanciata una battaglia, CombatEngine crea due partiti di Combattenti. Ogni Combatant imposta un oggetto ArtificialIntelligence che è associato con il combattente dato, che ha il compito di dettare mosse per i giocatori che non ricevono un comando esplicito:Strani riferimenti di passaggio in classe
public class Combatant {
ArtificialIntelligence ai = null;
public Combatant()
{
// Set other fields here.
this.ai = new ArtificialIntelligence(this);
}
}
Ecco cosa non mi piace: il campo interno (ArtificialIntelligence) prende un Combatant durante la costruzione, perché ha bisogno di alcuni campi Combatant per dettare le azioni appropriate. Quindi, per comodità, tengo un riferimento al combattente passato come argomento all'oggetto ArtificialIntelligence, ma quell'oggetto contiene un riferimento all'oggetto ai stesso! Crea questa ricorsione strana, ma non so come aggirarla. L'oggetto AI ha bisogno di molti campi specifici per il combattente, ecco perché ho passato l'intero oggetto, ma non mi piace come l'oggetto contenga il riferimento al campo ai che è contenuto nel combattente soprastante campo, che è contenuto nella classe Ai sovrastante. Questa cattiva pratica o sto semplicemente pensando?
Stai riscontrando un errore di stackoverflow? Ne dubito, e se no, non c'è nessuna ricorsione in corso qui, solo riferimento di passaggio. Penso che tu abbia un non-problema qui. –
Woops, sono un matematico di mestiere, quindi manca una parte della mia terminologia. Hai ragione, questo è solo un passaggio di riferimento. Sarebbe ancora considerato un problema? Non è una cattiva pratica nidificare i riferimenti in questa forma? E per rispondere alla tua domanda, non ricevo errori. Ho solo pensato che fosse brutto e volevo avere delle opinioni. – Sal