Ben bir web dev (oyun hobi olarak) ve kendimi birkaç kez aşağıdaki paradigmayı kullanıyorum. (Her ikisi de sunucu mimarisi geliştirirken ve video oyunu dev çalışmaları ile.) Gerçekten çirkin görünüyor, ama etrafta bir çalışma bilmiyorum. Oyun devresine bir örnek vereceğim, çünkü yakın zamanda bunu fark ettim. Bu üzerinde çalıştığım bir RPG. Her savaş başlatıldığında, CombatEngine iki savaşçı partisini yaratır. Her Muharip açık bir komut almayan oyuncular için hamle dikte sorumlu olan verilen Muharip, ilişkilendirilen bir ArtificialIntelligence nesnesi kurar: BuradaSınıf inşasında geçen garip referanslar
public class Combatant {
ArtificialIntelligence ai = null;
public Combatant()
{
// Set other fields here.
this.ai = new ArtificialIntelligence(this);
}
}
Sevmiyorum şu şekildedir: İç saha (ArtificialIntelligence) inşaat sırasında bir Combatant alır, çünkü uygun eylemleri dikte etmek için bazı Combatant alanlarına ihtiyaç duyar. Bu nedenle, kolaylık sağlamak için, ArtificialIntelligence nesnesine arg olarak iletilen savaşçıya bir referans yapıyorum, ancak bu nesne ai nesnesinin kendisine bir referans içeriyor! Bu garip özyinelemeyi yaratıyor, ama etrafta nasıl çalışacağımı bilmiyorum. AI nesnesi, muhariplere özgü alanların iyi bir şekilde ele alınmasını gerektiriyor, bu yüzden de tüm nesneye geçtim, ancak nesnenin daha sonra üstlerindeki muhatapta yer alan ai alanının referansını nasıl içerdiğini sevmiyorum üstteki ai sınıfında bulunan alan. Bu kötü bir uygulama mı yoksa sadece düşünmeyi mi düşündüm? Burada "tasarım" sorunu olmamasına rağmen
Yığınlama hatası mı alıyorsunuz? Bundan şüphe duyuyorum, ve değilse de, burada referans olarak geçen bir tekrarlama yok. Bence burada bir sorun değil. –
Woops, ticaret tarafından bir matematikçiyim, bu yüzden bazı terminolojilerim eksik. Haklısın, bu sadece referans geçiyor. Bu hala bir sorun değil mi? Bu formda referanslar yerleştirmek kötü bir uygulama değil mi? Ve sorunuzu cevaplamak için, herhangi bir hata almıyorum. Sadece kötü göründüğünü ve fikir almak istediğini düşündüm. – Sal