Situatie:
Ik ben (zoals altijd) bezig met het bouwen van een GUI. Nou heb ik het voor de verandering eens met classes aangepakt (aot met structs en alle functies global). Ik heb een basisklasse -- aw_window (Aurora Window, daar staat aw voor) -- waar alle 'algemene' functies in staan zoals init() (voor een window), destroy() enzovoort enzovoort. Dit heeft als voordeel dat je je class data members niet public hoeft te declareren.
Probleem:
Alles goed en wel, maar ik zit er dus over te denken om de algemene functies globaal te maken, omdat zoals ik het nu heb, elke instantie een bonk code bij zich heeft, terwijl dat in principe niet hoeft. Maar als ik die algemene functies globaal maak (voor de n00b: dwz dat ze niet gedefinieerd staan in de class, maar gewoon in het programma zelf), betekent dat dat ik ofwel (bijna) alle data members public moet maken, ofwel dat ik voor (bijna) alle data members een get/set functie moet coden.
Ik ben niet zo voor dat laatste, aangezien ik zo ben dat ik er dan allemaal controle-code omheen smijt. Bovendien moet ik dan twee keer zoveel functies schrijven als dat er members zijn.
Maar ik ben ook niet voor de eerste mogelijkheid (alle members public maken), omdat mijn GUI een library moet worden, wat dus betekent dat n00b/onvoorzichtige/kwaadwillende coders onheil kunnen aanrichten met NULL-pointer references en nog meer evil stuff.
Dus, ziehier mijn probleem. Let's have some solutions!
Ik ben (zoals altijd) bezig met het bouwen van een GUI. Nou heb ik het voor de verandering eens met classes aangepakt (aot met structs en alle functies global). Ik heb een basisklasse -- aw_window (Aurora Window, daar staat aw voor) -- waar alle 'algemene' functies in staan zoals init() (voor een window), destroy() enzovoort enzovoort. Dit heeft als voordeel dat je je class data members niet public hoeft te declareren.
Probleem:
Alles goed en wel, maar ik zit er dus over te denken om de algemene functies globaal te maken, omdat zoals ik het nu heb, elke instantie een bonk code bij zich heeft, terwijl dat in principe niet hoeft. Maar als ik die algemene functies globaal maak (voor de n00b: dwz dat ze niet gedefinieerd staan in de class, maar gewoon in het programma zelf), betekent dat dat ik ofwel (bijna) alle data members public moet maken, ofwel dat ik voor (bijna) alle data members een get/set functie moet coden.
Ik ben niet zo voor dat laatste, aangezien ik zo ben dat ik er dan allemaal controle-code omheen smijt. Bovendien moet ik dan twee keer zoveel functies schrijven als dat er members zijn.
Maar ik ben ook niet voor de eerste mogelijkheid (alle members public maken), omdat mijn GUI een library moet worden, wat dus betekent dat n00b/onvoorzichtige/kwaadwillende coders onheil kunnen aanrichten met NULL-pointer references en nog meer evil stuff.
Dus, ziehier mijn probleem. Let's have some solutions!
.oisyn: Échte programmeurs haten PHP met een passie. Ben jij soms geen echte programmeur?