Genel bir soru olsa da, kapsamım C # 'dır, çünkü C ++ gibi dillerin yapıcı yürütme, bellek yönetimi, tanımsız davranış vb.
Biri bana kolay cevaplanamayan ilginç bir soru sordu.
Neden bir sınıfın kurucusunun hiç bitmeyen bir döngü başlatması (yani oyun döngüsü) için kötü bir tasarım olarak kabul edilir (veya hiç?)?
Bundan kırılan bazı kavramlar var:
- En az şaşkınlık ilkesi gibi, kullanıcı yapıcının böyle davranmasını beklememektedir.
- Ünite testleri, bu sınıfı oluşturamayacağınız veya asla döngüden çıkmadığı için enjekte edemediğiniz için daha zordur.
- Döngünün sonu (oyun sonu) o zaman kavramsal olarak kurucunun bittiği zamandır, ki bu da gariptir.
- Teknik olarak, böyle bir sınıfın kurucu dışında hiçbir ortak üyesi yoktur, bu da anlaşılmasını zorlaştırır (özellikle uygulamanın olmadığı diller için)
Ve sonra teknik sorunlar var:
- Yapıcı aslında hiç bitmez, peki burada GC ile ne olur? Bu nesne zaten Gen 0'da mı?
- Temel bir kurucunun asla geri dönmemesi nedeniyle, böyle bir sınıftan türetmek imkansız ya da en azından çok karmaşık
Böyle bir yaklaşımla açıkça daha kötü veya aldatıcı bir şey var mı?
while(true)
bir özellik setter döngü: new Game().RunNow = true
?
var g = new Game {...}; g.MainLoop();