parameter naam
Gebruiken jullie als parameter een lange of korte naam?
Voorbeeld korte naam:
function loadClass($name)
Voorbeeld lange naam:
function loadClass($class_name)
"It depends..."
En in het voorgenoemde voorbeeld? Stel je hebt een autoloader class met daarin een loadClass function?
Je kunt (denk ik) 2 beredeneringen volgen, maar misschien weet jij nog een andere? De eerse redenering gaat uit van de naam de functie, in dit geval loadClass. De parameter $name zal dan wel betrekking hebben op "class". Dus uit de combinatie van method en parameter begrijp je dat $name dan wel op class zal slaan.
De 2e beredenering is, wees altijd zo volledig mogelijk. Alleen $name maakt niet duidelijk om wat voor $name het gaat. Daarom is $class_name beter.
Twee verschillende zienswijzes, en ik ben benieuwd hoe jullie daar mee omgaan.
Ozzie, dit topic slaat echt nergens op... :') Next...
Raoul, serieus. Als je niks zinnigs hebt te zeggen hou dan echt aub je mond. Ik ben hier niet van gediend.
Class name, maar misschien ook file name, package name... You name it :-)
Als je dan echter een UserRepository hebt voor de users en een GroupRepository voor de groep waar de User in hoort en je stopt die beide in een UserGroupService, dan heb je een probleem als je $repository gaat gebruiken. Dan gebruik je dus $userRepository en $groupRepository.
Als je dan in de method addUserToGroup een variabele $name hebt dan is het zeer onduidelijk of dat de naam van de group of van de user is en dus gebruik je $userName of $groupName.
Sterker nog, als je in de constructor van het eerste voorbeeld de echte naam van de user hebt en zijn nicknaam dan is $name ook veel te onduidelijk en dus ga je dan voor $realName en $nickname (of $username, wat dus iets anders is dan $userName wat ik in het eerste voorbeeld noemde).
Gaan we het dan nog leuker maken dan zit je in de UserGroupService met een probleem als je $realName zou gebruiken. Is dat dan de echte naam van de groep of van de user? Dan gebruik je dus $userRealName of $realNameOfUser.
Maar ben je dan in een method rejectUserFromAllGroups dan heb je weer voldoende aan een variabele die $name heet, aangezien je hier helemaal niet over groepnamen praat.
Maar als je dan weer in een foreach de user van alle groepen wilt verwijderen heb je wel weer te maken met de naam van de groep. Dan is die $name die net perfect was dus weer niet perfect, dus dan ga je weer over op $userName en $groupName.
Als je dan in een groep zit en je wilt de namen van je users ophalen dan is getNames() weer te onduidelijk. Heeft de group meerdere namen of wil je dan de user namen? Dan moet je dus weer getUsersName() (niet te verwarren met getUserNames(), aangezien een user niet meerdere namen mag hebben, tenzij je een verzetsheld bent) gebruiken of nog beter getUsers()->getName().
Als de user dan een $realName, $userName en $groupName heeft denk je dat je perfect bent, tenzij je weer twijfelt of je überhaupt wel de groepnaam in de user wilt hebben. Dan ga je het weer veranderen in $realName, $userName en $group waarbij je weer $group->getName() moet doen om de naam van de groep op te halen.
En stel je was ooit begonnen met Group#getGroupName() en je extend Group in een Sekte klasse dan heb je weer een probleem met het oproepen van de naam van die sekte. Want ga je dan Sekte#getGroupName() gebruiken? Nee, dan moet je weer een wrapper maken die Sekte#getSekteName() heet. En als je dat hebt gedaan moet je je zelf 360° in het ronddraaien en bedenken dat je eigenlijk veel beter Group#getName() had kunnen doen en dus ga je het weer aanpassen zodat je slechts alleen nog Group#getName() nodig hebt, waarbij Sekte#getName() ook nog perfect is.
Ik had ook kunnen zeggen: "It depends..." en "Software entities should be open for extension, but closed for modification"
Gewijzigd op 19/03/2014 19:51:05 door Wouter J
Oké... het gaat dus om een name van een class... dus als de parameter $name is, dan zou het voor jou niet 100% duidelijk zijn dat het om een class name gaat?
@Wouter: ik snap wat je bedoelt. In de context van een User class, zou ik ook praten over een name, age en gender en niet over een user_name, user_age en user_gender.
Ik vind alleen een loadClass method binnen een autoloader class een beetje twijfelachtig. Omdat het woord class in de naam van de method zit, lijkt het logisch dat $name daar dan wel mee zal samenhangen. Maar in de stelling van Ward, om zo specifiek mogelijk te zijn, kan ik me ook wel weer vinden.
Ozzie PHP op 19/03/2014 19:46:42:
Het laatste "Ik ben hier niet van gediend" is ook wel erg kort door de bocht. Mischien een tip: helemaal niet reageren is beter dan zo'n kortaangebonden reactie?Raoul, serieus. Als je niks zinnigs hebt te zeggen hou dan echt aub je mond. Ik ben hier niet van gediend.
Misschien wel, misschien niet. Ik vind het erg vervelend dat iemand (Raoul) voor iemand anders gaat beslissen dat zijn topic nergens op slaat. Iedereen hier heeft het recht om te vragen wat hij wil. En ik ben er niet van gediend als andere mensen voor andere mensen gaan beslissen wat wel of niet "ergens op slaat". Het begint met respect hebben voor elkaar en iedereen in z'n waarde laten. En daarmee heb ik gezegd wat ik wil zeggen.
modmelding
Graag vanaf nu weer on topic reageren.
Als je een ander zijn schrijfstijl niet aanstaat, kun je dit naar iemand sturen via een PM, een topic is hier niet voor bedoelt.
Graag vanaf nu weer on topic reageren.
Als je een ander zijn schrijfstijl niet aanstaat, kun je dit naar iemand sturen via een PM, een topic is hier niet voor bedoelt.