PHP expert |
|
Als het "de lading niet dekt" dan is dat meestal een eigen keuze. Je kan een coverage test runnen samen met je unit tests en die gaat je perfect kunnen zeggen welke lijnen code niet getest werden door jouw unit tests.
Die is_int is helemaal niet te streng, parse gewoon je variable naar een int voor je ze doorgeeft aan de functie en er is geen probleem. Bijvoorbeeld:
echo sum((int)"6", (int)"9");
echo sum ((int )"6", (int )"9");
Dit is nu net de grote oorzaak dat veel programmeurs het niet zo voor PHP hebben, gebrek aan consistentie. Je zou inderdaad de sum functie string argumenten kunnen laten accepteren, maar hiermee maak je alleen je documentatie en implementatie van de sum functie moeilijker en minder consistent.
Het enige wat je moet doen is duidelijke documentatie geven en in dit geval is dat heel simpel. Je kan 2 argumenten meegeven en ze moeten beide een integer zijn.
Maar dat terzijde, want we zijn een beetje off-topic aan het gaan.
Single responsibility principe is inderdaad één van de dingen die ik bedoel, maar het is niet omdat je de theorie kent dat je deze ook toepast. Wij werken hier vaak met heel getalenteerde programmeurs en master studenten die hun theorie kennen, maar deze in de praktijk totaal niet toepassen.
Ik ben er van overtuigd dat je code er beter van wordt gebaseerd op zowel eigen ervaring en op de vooruitgang die stage studenten bij ons maken.
Uiteraard ga je niet bij elk type project unit tests schrijven. Ik denk maar aan een landingspagina of een gewone website waar dit in veel gevallen overkill is.
Maar als je bijvoorbeeld een CMS, backend systeem, library of zo aan het schrijven bent is het een must.
Wij gebruiken persoonlijk hier op het bedrijf nooit libraries in onze code waarbij geen unit tests geschreven zijn. Het gevaar op bugs en problemen is daarbij veel te groot. |