hoe lang...
Zomaar een leuk vraagje. Puur uit nieuwsgierigheid. Ik ben bezig met het maken van een framework en heb zojuist een class afgerond van 250 regels. Best lang vind ik. Nu vraag ik me af... hoe lang (hoeveel regels) zijn jullie langste classes eigenlijk?
Maar goed, ik denk dat als je class 250 regels is, deze eigenlijk al teveel doet. Heb je ook weleens naar de PSR-x standaarden gekeken? https://github.com/php-fig/fig-standards
De Kernel van Symfony2 bijv, heeft 771 regels. Maar dat komt niet omdat die teveel doet, maar omdat hij wat functies heeft die veel ruimte in beslag nemen omdat die nou eenmaal niet makkelijk te maken zijn.
Als je de kwaliteit van je script een beetje snel wilt zien (het is natuurlijk nooit 100% goed, sterker nog, het geeft je alleen in inzicht) dan zou ik eerder aanraden tools als PHPloc te gebruiken, veel nuttiger.
Quote:
De Kernel van Symfony2 bijv, heeft 771 regels. Maar dat komt niet omdat die teveel doet, maar omdat hij wat functies heeft die veel ruimte in beslag nemen omdat die nou eenmaal niet makkelijk te maken zijn.
Of terwijl, teveel doet met andere woorden :)
Maar goed, ik zeg ook niet dat het altijd in verband staat met het niet 'correct' zijn van een klasse maar dat het vaak code smell is, er is meestal geen goede reden om een class te maken van een paar honderd regels.
Ik maak zelf ook wel een lange class van een paar honderd regels maar durf daar best van te zeggen dat het beter kan door verantwoordingen op te splitsen.
Volgens mij hoort dit allemaal bij de request class, maar uiteindelijk is ie daardoor best lang geworden. Maar ook niet zo heel raar... als je nagaat dat de globals + sessie een eigen set, get en has functie hebben, dan ben je gelijk al 18 functies verder.
Toevoeging op 22/02/2013 11:37:05:
Als ik het commentaar en de witregels overigens niet mee tel, dan is de code 149 regels, waarbij ik ook de regels met } (afsluiting van iedere method) heb meegeteld.
Toevoeging op 22/02/2013 12:45:04:
Ik ga toch maar de class opsplitsen in meerdere classes :)
De constructor staat op lijn 2573; in totaal 5300 lijnen.
Nu ja ... het is nog OOP in PHP4 stijl, sinds php5 zijn er veel nieuwe OOP dingen gekomen.
Je hoeft het überhaut niet te zien als een lichtend voorbeeld.
Maar ik vind het wel handig om 1 bestand te hebben, dat ik kan downloaden en includen; waarvan ik weet dat het over 5 jaar nog perfect zal werken.
Quote:
Ik ga toch maar de class opsplitsen in meerdere classes :)
Zou ik niet doen, wat wil je dan gaan opsplitsen?
Als je ergens 750 regels voor nodig heb, kun je het ook verspreiden over 3 classes met ieder 250 regels, maar misschien draait dat toch weer langzamer dan die ene class ;-)
Het ligt er gewoon aan wat voor class het is, hoe diep ga je hem splitsen.
Wouter J op 22/02/2013 16:22:12:
Zou ik niet doen, wat wil je dan gaan opsplitsen?
Quote:
Ik ga toch maar de class opsplitsen in meerdere classes :)
Zou ik niet doen, wat wil je dan gaan opsplitsen?
Hij kan wel iets gesctructureerder. Ik kan bijv. alle data in een aparte glass stoppen die ik kan aanroepen met een functie getData(), en ik kan functies die specifiek bij de browser of server horen in een aparte class zetten. Daar wordt het geheel wel wat overzichtelijker van.