-
Notifications
You must be signed in to change notification settings - Fork 0
Functional Programming
TL;DR: je houdt je variabelen binnen de functies, cluttered daarmee niet de global scope en zorgt er zo voor dat je code alleen bestaat uit blokken die al geprocessede info eruit yeeten.
= minder spaghetticode.
= minder 'onopvallende invloeden op andere stukken code'.
= minder bugs.
Het deels invullen van een formule zodat je βm later volledig kan invullen (β> re-usable)
- Bij declareren variabele: unbound
- Bij gebruiken variabele (invullen): bound.
Was top om zo met meerdere programmeurs samen te kunnen werken aan een programma.
Werd alleen steeds minder efficient naarmate de applicatie groter wordt.
Functional daarentegen:
β’ Bugproof
β’ Geautomatiseerd testen
β’ Maakt gebruik van recursie
β’ inFInItEloOps
β’ Er bestaat geen state
β’ Kost dan ook geen werkgeheugen (behalve bij het parsen)
β’ Bij page refresh moet de hele f*****g structuur weer worden doorlopen bij OOP
β’ Als je programma klaar is, is het klaar.
β’ Functies doen in principe maar 1 ding en da's herbruikbaar
β’ Doet niets buiten hun eigen scope
β’ Makkelijk te begrijpen wat er gebeurt
β’ Soort fabrieksstraat;lopendebandwerk waarbij elk machientje een functie is
β’ Zie je code als een soort boom die afgelopen wordt
β’ Genereerde output dmv doorlopen van die boomstructuur
β’ Blockscopes
--> functies aanroepen
Imperative: go-to statements (lineair je code doorlopen)
β’ Anonieme functies (middels arrowfunctions)
β’ Functies hebben maximaal 1 argumente nmaximaal 1 returnwaarde(~argumentarray:return arguments) (unary function)
β’ Oneliners
MaakUser()
MaakNaam()
MaakGeboortejaar()
MaakEmailadres()
CheckEmailadres() function magSpelen(leeftijd) {
return leeftijd >= PEGI
} (pakt externe data)
function makeAdder(a) {
return function (b) {
return a + b
}
}const add42 = makeAdder(42)
Console.log(add42(4))Vanaf heten IIFEβs dogβs ballsβ> runt 1 keer, valt daarna weg en valt niet meer te manipuleren
Elk programma dat je schrijft is niet meer dan .map, .filter en .reduce
Schrijf eerst je filter;
β’ Filter bijv wachtwoorden eruit
β’ Map de achtergebleven gegevens naar een html-representatie
β’ Reduce de output naar de browser als whateverweergave
"Gooi anders ook eens Object.freeze om je functie heen en zie waar je fout zit."