dJeez zei:
Als ik u een raad mag geven : BDD (
Behavior Driven Development) zeker ook bekijken. Voor PHP is dat dan
phpSpec en
Behat (de eerste is internal BDD, de tweede external BDD - dus user stories geautomatiseerd uitvoeren op de site). Naar mijn aanvoelen evolueren meer en meer mensen die richting uit..
Het is een beetje een grijze zone als je over TDD vs BDD spreekt. Persoonlijk zie ik implementeren ahv phpSpec, rSpec, … tests niet als BDD, maar als pure TDD. Je gebruikt de "spec" grammatica om unit tests te schrijven (micro dus). Of je nu een assert of een expect/should assertion library gebruikt, de dingen die je test zijn identiek hetzelfde. Spec leest makkelijker voor een leek, assert is compacter, dus je zal voor- en tegenstanders van beiden vinden.
BDD is voor mij implementeren van user stories (Behat, Cucumber, …). En dikwijls is dat in min of meer verstaanbare tekst die dan via nifty regex naar opnieuw assertions worden omgezet. Je test echter vanuit een ander standpunt in je stack, vanuit de featureset en flow van je applicatie zelf.
TDD zie ik dus meer als het starten vanuit unit tests (micro) terwijl BDD vanuit de integration tests vertrekt (macro). En net zoals bij een RTS zal iemand die enkel maar micro of macro doet verpletterd worden door iemand die in staat is van beiden goed te doen
Soit, de interpretatie van wat TDD en wat BDD nu eigenlijk is maakt nie veel uit. Ontwikkelen aan de hand van tests zorgt gewoon voor betere focus, minder afleiding en uiteindelijk compactere en veel mooiere code als je t goed doet en dat is waar het uiteindelijk allemaal om draait. En niets geeft meer voldoening dan een applicatie ontwikkelen waar je testsuite heel snel draait (die dus bij elke aanpassing opnieuw de tests kan doorlopen) en waar je beetje bij beetje al dat rood in groen ziet veranderen.
TheCrow7 zei:
Zijn er mensen die daadwerkelijk nog de bomen in het javascriptbos zien?
Ik heb al met pure javascript als met jQuery en Mootools gewerkt, maar ik zou me eens moeten verdiepen in javascript want mijn kennis hierover is echt verwaarloosbaar.
Enkel rest de vraag: begin ik met pure javascript of kies ik voor een library/framework? En indien de 2de optie, welke lib?
tl;dr Leer eerst Javascript zelf goed, kies dan de lib die het beste past bij wat je wil doen.
Een lib is een hulpmiddel, Javascript is de taal. Zonder een grondige kennis van de taal en de concepten erachter (en Javascript is een gans ander beestje dan OO-talen zoals Java, PHP, Ruby, …) blijft alles wat je doet niet meer dan bricoleren.
Libraries zijn een beetje zoals IKEA meubels. Je moet alles zelf in mekaar steken, maar moeilijk is het niet, de onderdelen zijn allemaal voorgezaagd en alles past (zolang je weet wat waar hoort) mooi bij mekaar. Voor het meeste is dat ook genoeg, het zal je al heel ver brengen.
Dan heb je mensen die zelfs niet in staat zijn IKEA meubels in mekaar te steken en iets nemen dat door iemand anders in mekaar gestoken is (plugins). Die meubels die al in mekaar gezet zijn kunnen goed in mekaar gezet zijn of slecht, aan de buitenkant zie je t nie echt… of ze komen thuis en t past nie waar ze t willen zetten en ze zagen er zelf een stuk af en posten dan op dit forum omdat het meubel omver valt zonder de poten die ze in de vuilbak gegooid hebben.
De laatste en moeilijkste optie is van zelf meubels te leren maken. Het kost veel meer moeite en het zal zeker met vallen en opstaan zijn, maar je kan wel zelf speciale meubels maken, bestaande meubels beoordelen en de rommel van de goeie dingen scheiden.
Met Javascript libs en plugins is dat juust hetzelfde. Als je JS zelf kent ga je de juiste lib voor het juiste project kunnen kiezen, plugins naar waarde schatten als je ze wil gebruiken, ze eventueel kunnen aanpassen zonder dat ze uit mekaar vallen, … Het goeie en tegelijk slechte aan libs is dat ze naast normalizeren van browserincompatibiliteit ook veel extra toevoegen om je code er properder te laten uitzien: promises, iterators, wrappers, … Pas op, ik ben daar voorstander van, maar als je dan op een punt komt waar je iets speciaals wil doen en je niet snapt waarom die libs de zaken zo doen, dan loop je vast.
En soms is het gewoon beter van geen lib te gebruiken. jQuery met 15 animatieplugins om een slideshow te hebben met fancy effectjes op een mobile device…*god…*waarom toch??? jQuery heeft pakken code om problemen aan te pakken waar geen enkele mobiele browser boodschap aan heeft, animaties kunnen dikwijls via CSS (en dus hardware accelerated) ipv via timers in Javascript, …