Skip to content

Functional Programming

Deanna Bosschert edited this page Nov 3, 2020 · 8 revisions

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.

Notes- Introductie Functional Programming

Currying

Het deels invullen van een formule zodat je β€˜m later volledig kan invullen (β€”> re-usable)

  • Bij declareren variabele: unbound
  • Bij gebruiken variabele (invullen): bound.

Object-oriented programming

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

Procedural programming

β€’ 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)

Wat mag wel?

β€’ Anonieme functies (middels arrowfunctions)
β€’ Functies hebben maximaal 1 argumente nmaximaal 1 returnwaarde(~argumentarray:return arguments) (unary function) β€’ Oneliners

MaakUser()      
MaakNaam()       
MaakGeboortejaar()      
MaakEmailadres()      
CheckEmailadres()      

Pure en impure functies

Impure:

function magSpelen(leeftijd) {
  return leeftijd >= PEGI
} 

(pakt externe data)

Pure:

function makeAdder(a) {
  return function (b) {
    return a + b
  }
}
const add42 = makeAdder(42)
Console.log(add42(4))

Interesting takes

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."

πŸ“‹ Project

πŸ—“ Logboek

🧹 Data cleaning

πŸ“‹ Surveydata

βš™πŸ“ Documentatie

πŸ–ŠοΈ Notes

πŸ“ˆ Evaluatie

Clone this wiki locally