getter/setter op 1 regel?
Ik heb regelmatig getters/setters die maar uit 1 regel bestaan.
Dit komt bij mij echt heel vaak voor. Het zelfde geldt voor getters.
Nu vraag ik me af of hier mensen zijn die hun getters/setters op 1 regel zetten, dus zo:
Code (php)
Stel dat een class 10 van zulke getters en setters heeft, dan wordt m'n class dus meteen 40 regels korter. Goed idee???
Ik vind het inconsistent en zal het zelf nooit doen. Bestands lengte maakt van de rest niet heel veel uit in PHP.
Wat ik wel doe als ik functies aanmaak waar ik verder niks mee doe omdat deze in een Interface staan.
en dat is dan ook echt de enige uitzondering.
Ben er ook nog niet over uit eerlijk gezegd. Maar soms heb ik in een bestand heel veel setters en getters en dan zou het wellicht handig zijn om de class een stuk kleiner te maken.
Ik heb overigens eens bij een bedrijf gewerkt waar ze dit standaard deden, en dan ook geen commentaar-regels erbij. Gewoon zo:
Code (php)
En ik adviseer het zo ook te doen, is leesbaarder, tevens is het best practise om in de setter het object zelf te returnen inplaats van de var zelf.
Gewijzigd op 15/03/2013 20:13:30 door Local Dev
Nu return je iets in een setter. Dat lijkt me niet de bedoeling van een setter.
Gewijzigd op 15/03/2013 20:14:33 door Local Dev
Local Dev.. het is idd een handige shortcut voor method chaining maar helemaal OO is het niet.
@local: ik zie dat je het object returnt, maar waarom zou je dat doen? Een setter is bedoeld om iets te setten, niet om iets terug te geven...
Toevoeging op 15/03/2013 20:21:51:
@Ozzie, ja dat klopt, maar bij een setter set je een bepaald onderdeel in het object / entity een waarde in het betreffende object.
Meer info linkje
Gewijzigd op 15/03/2013 20:30:30 door Local Dev
Ja, je set iets, MAAR... jij geeft vervolgens ook iets terug, namelijk het object. Waarom zou je dat doen? Zodat je meerdere dingen tegelijk kunt setten ofzo? Ik vind het niet bij een setter horen om het object te returnen. Vandaar dat ik wel benieuwd ben waarom je dit doet.
- Raoul - op 15/03/2013 20:14:36:
Local Dev.. het is idd een handige shortcut voor method chaining maar helemaal OO is het niet.
Daarom dus, het is gewoon een handigheidje..
Zo kun je bijvoorbeeld dit doen:
ipv
Ik snap de insteek wel, alleen zou ik dit zelf niet in een setter toepassen.
Ja omdat jij het ziet als 'set' duuuuuus je mag niks returnen. Klopt zo hoort officieel OOP, maar OOP is ook bedoelt om makkelijk en handig te programmeren. Het is maar hoe letterlijk je 'set' en OOP neemt :-)
Het blijft natuurlijk persoonlijke voorkeur, ik doe het niet, maar die keuze ligt natuurlijk aan jezelf.
Ik heb het eens getest... ik kreeg een class zomaar 30 regels korter.... maaaaaar... het leest toch niet echt prettig, dus ik ga het toch maar niet toepassen.
Classes, Properties, and Methods, van PSR-2:
Kwestie van stijl, maar er bestaat een stijlgids... Uit sectie 4, PSR-2 Coding Style Guide:
The opening brace for the class MUST go on its own line; the closing brace for the class MUST go on the next line after the body. [...] A method declaration looks like the following. Note the placement of parentheses, commas, spaces, and braces:
Gewijzigd op 16/03/2013 09:39:00 door Ward van der Put
Ah oke... ik zet zelf de accolades altijd ACHTER de class naam en de functie naam. Inderdaad een kwkestie van stijl/smaak... en het scheelt toch weer een paar regels ;)
Ozzie PHP op 16/03/2013 14:58:07:
Ah oke... ik zet zelf de accolades altijd ACHTER de class naam en de functie naam. Inderdaad een kwkestie van stijl/smaak... en het scheelt toch weer een paar regels ;)
Even wat historische achtergrond: 20+ jaar geleden werd op Unix-systemen voornamelijk vi als editor gebruikt (tegenwoordig nog steeds overigens, maar vroeger waren er vrijwel geen alternatieven).
In vi kun je, als je openings-accolades op een nieuwe regel staan, snel tussen functies navigeren met [[ en ]]. Als je de accolade achter de functienaam zet, werkt dat niet. Omdat je vroeger meestal zat te programmeren op een domme terminal die via een niet al te snelle RS232-verbinding met de computer was verbonden, was het een ramp om door je listing heen te moeten scrollen. Dit soort navigatie was dan ook zeer welkom.
Overigens zet ik ook bij if/for/while-blokken de openingsaccolade op een nieuwe regel. Deels omdat me dat zo aangeleerd is, deels omdat je dan eenvoudiger het begin en eind van een blok kunt matchen, en tegenwoordig vooral omdat ik nogal eens #-tekens in mijn condities heb staan, waar de syntax highlighting van sommige editors niet goed mee om kan gaan. Dat is weliswaar niet in PHP, maar gewoontes zijn niet taalgebonden. ;-)
Hehe, thanks voor de toelichting Willem :)