Als ik met behulp van de refactoring van MS Visual Studio 2005 (VS) een stuk code verhef tot method (met behulp van code selecteren, rechts-klik, 'Refactor', 'Extract Method...'), dan maakt VS daar in sommige gevallen een private static method van. Dit gebeurt als de geselecteerde code geen object state raadpleegt of wijzigt. Nu snap ik wel dat het in zulke gevallen mogelijk is om van zo'n stuk code een static method te maken. Wat ik me alleen afvraag is wat daar nu precies de voordelen van zijn. Ik heb er de MSDN library op nageslagen, maar MS geeft daarin geen antwoord op deze vraag.
Zelf kan ik op basis van mijn kennis in ieder geval twee mogelijke voordelen verzinnen. Wat ik me afvraag is of er nog meer zijn. Dit is mijn voorlopige lijst:
[list]• De this pointer wordt niet doorgegeven aan static methods, dit scheelt dus een beetje ruimte op de stack (en misschien ook een klein beetje performance?).
Dit voordeel zal in veel gevallen marginaal zijn denk ik.
• Zolang je de this pointer niet zelf handmatig gaat zitten doorgeven weet je zeker dat de betreffende method niet in staat is de state van je object aan te passen of te raadplegen.
Dit zou kunnen helpen in het zuiver houden van je code als het gaat om het verdelen van verantwoordelijkheden over methods. Private statics zijn dan je 'utility' methods. Door ze static te maken en te houden dwing je af dat ze dat ook blijven.
NB: Het gaat me vooral om de voordelen van het gebruik van private static methods. Het staat je natuurlijk vrij om de discussie enigszins te verbreden. Ik ben bijvoorbeeld ook wel benieuwd of er nog eventuele nadelen aan zitten.
Ik *denk* dat deze thread beter past in SEA dan in PRG. Bij voorbaat excuus aan de mods als dit een foute inschatting is
.
Zelf kan ik op basis van mijn kennis in ieder geval twee mogelijke voordelen verzinnen. Wat ik me afvraag is of er nog meer zijn. Dit is mijn voorlopige lijst:
[list]• De this pointer wordt niet doorgegeven aan static methods, dit scheelt dus een beetje ruimte op de stack (en misschien ook een klein beetje performance?).
Dit voordeel zal in veel gevallen marginaal zijn denk ik.
• Zolang je de this pointer niet zelf handmatig gaat zitten doorgeven weet je zeker dat de betreffende method niet in staat is de state van je object aan te passen of te raadplegen.
Dit zou kunnen helpen in het zuiver houden van je code als het gaat om het verdelen van verantwoordelijkheden over methods. Private statics zijn dan je 'utility' methods. Door ze static te maken en te houden dwing je af dat ze dat ook blijven.
NB: Het gaat me vooral om de voordelen van het gebruik van private static methods. Het staat je natuurlijk vrij om de discussie enigszins te verbreden. Ik ben bijvoorbeeld ook wel benieuwd of er nog eventuele nadelen aan zitten.
Ik *denk* dat deze thread beter past in SEA dan in PRG. Bij voorbaat excuus aan de mods als dit een foute inschatting is
Stel niet uit tot morgen wat je vandaag nog tot morgen kunt uitstellen...