Bir sürü kasaba içeren bir ülke sınıfı oluşturur muyum?
Elbette.
Kasabalar çoğu bina sınıfı içeriyor mu, çoğu insan sınıfı içeriyor mu?
Elbette.
Oyuncunun dolaşmak için erişebileceği bir yol bulma sınıfı yapabilir miyim?
Elbette.
Yukarıda önerdiğiniz her şey makul görünüyor. Uzun vadede sizin için en iyi yol olmayabilir, ama bu iyi. Sana ilk gelen organizasyon modeli olduğundan açıkçası bunu bilmek mantıklı. Bunu almanız ve bir uygulamaya başlamanız önemlidir. Hem başlamanıza, hem de bir görevin başlangıcında geliştiricileri rahatsız eden bu ilk "tasarım felci" nin üstesinden gelecektir ve (bir şekilde kusurlu olduğu kanıtlanırsa) size artıları ve eksileri hakkında bir iki şey öğretir bu özel tasarım yaklaşımının
Doğal olarak kafanızdaki kavramları aldınız ve bazı basit kurallara göre kod halinde gruplandırdınız:
- Bu kavram davranışta veya sahip olduğum diğer nesnelerden elde edilen verilerde önemli ölçüde farklılık gösteriyor mu? (Ülkeler ve insanlar, eğer varsa, çok az anlamlı veri veya davranış paylaşırlar, bu nedenle oyun içinde farklı türlerle temsil edilmelidirler).
- Koddaki bu kavramı önemli bir şekilde manipüle etmem gerekecek mi (oyununuz bireysel insanlarla ilgileniyorsa, bu
Person
sınıfa ihtiyacınız olabilir , ancak oyun sadece SimCity'nin önceki sürümlerinde olduğu gibi toplamda onları önemsiyorsa, bir kasabanın nüfusunun 1: 1 eşlemesini oluşturmak için bu türe veya bu tür örneklere ihtiyaç int populationCount
duymayabilir. yeterli olabilir).
- Bu kavram devlet gerektiriyor mu? Eğer öyleyse, bir şekilde serbest fonksiyonlardan ziyade bu durumu (bir sınıfı) saklamama izin veren bir şekilde kapsüllenmelidir. (Bir yol bulma uygulamasının benzer bir gerçek dünya nesnesi yoktur, ancak haritadaki hangi düğümlerin önceden düşündüğü ve bir sınıfta onu bir grupta saklamaktan daha iyi yapılması gibi verileri takip etmeyi gerektirir. gizli küreseller ve bağımsız işlevler yapma).
Basit olsa da, bu soruları cevaplamak, zihinsel bir kavramın kaynak koduna dönüştürülüp dönüştürülmeyeceğine ve nasıl dönüştürüleceğine karar verirken size büyük fayda sağlayabilir. Nesne yönelimli tasarımın SOLID ilkelerini de okumak isteyebilirsiniz .
Yorumlarda yapılan bir varlık / bileşen sisteminin önerisinin de geçerli bir yaklaşım olduğunu unutmayın, ancak projenizi daha küçük olacak şekilde yeniden kapsamlandırmadıkça (sadece bir projede iki yeni, büyük zorluk üstlenebileceği için) çok ürkütücü olmak ve aksi takdirde yalnızca bir taneye odaklanmaktan elde edeceğiniz eğitim faydasını seyreltebilir). Bileşene yönelik bir modelde, yukarıdaki sorulardaki "tür" daha örtük hale gelir: koddaki somut tür değil, bir varlığı oluşturan bileşenlerin toplanmasıyla tanımlanan örtük tür. Aynı yol gösterici ilkeler uygulanabilir.