private properties
Een tijdje terug heb ik besloten om protected / private functies en properties te prefixen met een underscore.
Nu kom ik tot de ontdekking dat ik properties eigenlijk altijd private of protected maak. Ik vraag me dan ook af of het nog wel zinvol is om mijn properties te prefixen. Van de ene kant is het (voor andere programmeurs) wel duidelijk dat het om private / protected properties gaat, maar van de andere kant zit ik nu dus eigenlijk gewoon ALLE properties te prefixen met een underscore. Nu zit ik dus te denken om de properties niet meer te prefixen, maar alleen nog de private / protected functies.
Wat vinden jullie? Goed idee of niet?
Wat is het punt? Dat je geen private moet gebruiken, maar protected?
(en wat doe ik met de underscores?)
zal ik de underscores voor de properties dan maar achterwege laten?
En verder maak ik altijd gebruik van protected en heel heel heel soms private. Waarom? Omdat ik vind dat een child klasse ook toegang mag hebben op de properties van de parent. Ook is het soms wat makkelijker uit te bereiden.
Andere mensen, oa Erwin volgens mij, vinden dat je altijd private moet gebruiken met getters en setters. En dat je die getters en setters weer protected maakt zodat je doormiddel van die getters en setters in de child klasse de properties van de parent kan ophalen.
De manier van Erwin gaat ver, maar er valt wel iets voor te zeggen, alhoewel ik het denk ik zelf niet zo gauw zou doen.
Anyhow, ik laat die underscores voor m'n properties dan maar achterwege.
Protected velden kan je bijvoorbeeld gebruiken wanneer dit een array is die ook wordt gebruikt door de child klasse. Dan is dit beter dan een getter en een setter, want dan moet je eerst de hele array getten, aanpassen, en dan weer setten. Wat dan weer niet handig is.
Gebruik je een veld bijvoorbeeld als titel of waarde, dan is het handiger en veiliger om een getter en een setter te gebruiken.
over prefixen: ik vind het wel mooi staan. het heeft als je het zo zegt inderdaad niet zoveel nut, maar wanneer je de properties met een _ervoor houdt, onderscheidt zich dat van de argumenten die je mee kunt geven aan een method. zo zie je in 1 oogopslag welke variabelen een property zijn.
Gewijzigd op 10/05/2012 14:16:25 door Jeroen VD
Zeker mag je properties wel direct aanroepen, maar het netste is om dit vanuit de class zelf te doen en niet van buitenaf. Om dat te bewerkstelligen maak je je properties protected of private.
private/protected properties/methods is wel aanbevolen om een underscore voor te zetten, en of je dat kiest moet je zelf weten. ik zei alleen dat ik het wel duidelijker vind.
Ja, maar ik bedoelde dat je een property altijd vanuit de class zelf direct moet kunnen aanroepen. Een getter roept een property ook rechtstreeks aan.
ja, als je het zo gaat bekijken wel. ik bedoelde dat je buiten de class niet de properties niet direct mag aanroepen.
Het mag wel, maar het is niet gewenst. Daarom zet je inderdaad je properties op protected / private. Daar ging mijn vraag dus ook over... ik zette voor iedere property een underscore omdat deze protected/private is. Maar die underscore dat ga ik niet meer doen want het slaat nergens op omdat ik al m'n properties protected/private maak.
Wouter J op 10/05/2012 13:35:14:
oa Erwin volgens mij, vinden dat je altijd private moet gebruiken met getters en setters. En dat je die getters en setters weer protected maakt zodat je doormiddel van die getters en setters in de child klasse de properties van de parent kan ophalen.
He he, inderdaad. Nu, altijd is misschien een beetje te ver. Ik kan je ook genoeg voorbeelden geven waarbij ik er zelf ook alweer vanaf stap. Het idee, wat mij betreft dan, is in elk geval dat als je het via getters/setters regelt dat je altijd in de klasse zelf ervoor kunt zorgen dat de data correct is.