Door
Ozzie PHP
op 05-05-2013 00:09
gewijzigd op 05-05-2013 00:09
916 views
Ola,
Laatst wees iemand me hier op het forum erop dat wanneer je iets opslaat (bijv. als je gegevens cachet) je dan beter de method-naam "save" kunt gebruiken dan "set" omdat "save" duidelijker aangeeft dat je echt iets opslaat.
Nu heeft mijn cacher class dus keurig een "save" method, maar ik vraag me af wat de tegenhanger van "save" is. Is dat "get", of zou je dan beter "load" kunnen gebruiken? Dus is het get/save of load/save? Wat vinden jullie beter?
?Onbekende gebruiker
05-05-2013 00:22
Dit hangt af van jouw persoonlijke voorkeur zou ik zeggen. Zelf zou ik voor get gaan in dit geval.
Ik heb nu inderdaad get. Bij get hoort een set. Maar bij save... hoort daar ook een get bij? Of blijkt uit load dan duidelijker dat er iets wordt ingeladen?
?Onbekende gebruiker
05-05-2013 00:25
gewijzigd op 05-05-2013 00:28
Waarschijnlijk heb je ook verschillende drivers. Dus een database cache driver, een file cache driver en misschien nog enkele andere. Dan is get denk ik meer wenselijk.
Load voor mij persoonlijk moet er iets geladen worden, dit gebeurt ook... dus is er eigenlijk ook niets mis mee. Maar alsnog zou ik voor get gaan.
Misschien heeft iemand anders suggesties?
Even nog een voorbeeld.
<?php
class UserMapper {
public function getByUserId(User $user) {
}
}
?>
Hier gebruik ik ook altijd get i.p.v. loadByUserId(). Verschillende frameworks gebruiken ook get i.p.v load.
Mja, ik vind het lastig... ik zou ook kunnen gaan voor gewoon get en set (ipv save). Hetgeen wat ik mooi vind aan save is dat daaruit blijkt dat je iets echt opslaat.
Het verschil tussen get en load is niet heel groot, alleen geef je bij load aan dat er iets wordt ingeladen (een bestand, of iets uit een database). Dit in tegenstelling tot get, waarbij je direct iets uit een object terugkrijgt. Als je het zo beredeneert past load eigenlijk toch wel goed.
[size=xsmall]Toevoeging op 05/05/2013 00:32:53:[/size]
Voor jouw voorbeeld is ook wel weer iets te zeggen, dan krijg je dus eigenlijk dezelfde vraag...
Als je een user opslaat, gebruik je saveUser(). Zou je dan ook niet loadUser() moeten gebruiken ipv getUser. Hmmm...
?Onbekende gebruiker
05-05-2013 00:39
gewijzigd op 05-05-2013 00:41
Even geken op Stack Overflow en daar heb ik deze post gevonden: Naming Conventions. Hier zouden ze dus voor load gaan. Maar je doet ook getByUserId en niet loadByUserId alhoewel het niet verkeerd zou zijn uiteraard.
Als ik aan een project begin houd ik me er het hele project aan en dat is het beste denk ik. Anders heb je de ene keer load en de andere keer get.
Het enige nadeel wat dan wel weer optreedt, is dat je voor 2 vergelijkbare dingen ("get" en "load") 2 namen gebruikt. Dat kan tijdens het programmeren wel weer voor verwarring zorgen: moet ik een user nou "getten" of "loaden"?
Vanuit die gedachte zou je kunnen zeggen: dan gebruik ik overal "get". Dan weet je altijd dat je goed zit.
Maar vanuit die gedachte... kan ik dan van "save" ook niet beter "set" maken (in plaats van "save")?