Skip to content

Proces Functional Programming

ralfz123 edited this page Jan 27, 2021 · 12 revisions

Wat heb ik geleerd?

Ik vond het een moeilijk en pittig project, omdat we in een razend tempo stof kregen uitgelegd. Echter vond ik het wel super interessant om alles aangeleerd te krijgen. Zo heb ik geleerd om:

  • Vieze, smerige en naughty data op te schonen, zodat je data overhoudt waar je wΓ¨l iets mee kan.
  • Vanuit een andere hoek te kijken naar de dataset en het onderwerp van de opdracht, en op basis daarvan een aantal sterke onderzoeksvragen bedenken.
  • Code te refactoren en helder na te gaan wat nou echt essentieel is om een goed complex cleaning patroon te schrijven, zodat je schone en bruikbare data overhoudt.
  • Met een kritische blik steeds opnieuw kijken waar ruimte is voor verbetering. Hoe kan ik de code nΓ²g beter/korter/mooier/duidelijker schrijven? Is het helder voor de gebruiker? Ik heb hier veel van geleerd.
  • Feedback vragen van medestudenten, zodat ik die feedback kan verwerken en om te checken of zij mijn manier van werken snappen.

Herkansing πŸš€

De feedback van Laurens tijdens het eerste beoordelingsmoment was: Hoofdvraag nog wel een tikkie algemeen lijkt me, het is bijna eent trivia vraag, je onderzoeksvraag in je readme is iets anders dan in je wiki staat toch? je moet denk ik nog meer experimenteren met de uitwerking van je concept (schetsen, exploraties doen van visualisatie types) , onderzoek naar functional programming kan nog wel wat uitggebreider, ik mis wat meer 'overkopelende' principes zoals pure en impure functies etc. ik zie nog niet heel veel code in je repo, dus moeilijk om te checken waar je echt FP principes hebt toegepast. Bonus: Goed opgeschreven welke dataset je gaat gebruiken en wat de datapunten betekenen.

Aan de hand van de feedback die hierboven staat heb ik veel aangepast en opgevuld. Ik had tijdens het eerste beoordelingsmoment niet zo heel veel om te laten zien, want mijn wiki was onwijs slordig en onoverzichtelijk. Door na te gaan wat in de beoordelings rubric stond, wist ik wat ik allemaal nog moest doen. Ik heb erg veel tijd besteed aan het (functioneel) programmeren, maar ook zeer veel aan de wiki. Ik heb ervoor gezorgd dat de wiki compleet gevuld is met essentiΓ«le content. Ook is er eindelijk een duidelijk overzicht van wat er allemaal in de wiki te vinden is. Wel heb ik mijzelf steeds de vraag gesteld: Is dit helder? Is er geen betere/mooiere/kortere manier om dit te programmeren? Hierdoor bleef ik erg kritisch over mijn werk. De punten die ik gedaan heb voor de herkansing staan hieronder uitgelegd, namelijk;

βœ… Concept

Bij het eerste beoordelingsmoment waren we net pas begonnen met het bedenken van concepten. Ik had toen mijn proces van het concept nog helemaal niet goed gedocumenteerd. Hier kreeg ik ook feedback op dat het niet duidelijk was wat mijn concept was en hoe ik erop ben gekomen. Naarmate het vak vorderde, heb ik het proces van het concept helemaal gedocumenteerd en in verschillende onderdelen. Dit is nu volledig compleet gedocumenteerd en het begint op de pagina Debriefing (zie navigatie rechts onder het kopje Proces).

De pagina Wat is Functional Programming heb ik uitgebreid met veel content. Er stond maar 1 zin op deze pagina wat FP inhoudt, maar dat is natuurlijk veel te weinig. Daarom heb ik dit aangevuld met overkoepelende FP principes en voorbeelden. Doordat ik research had gedaan naar deze principes, was het mij voor ook gelijk veel duidelijker wat FP inhoudt. Deze principes versterken erg de betekenis van FP.

βœ… Pagina - Functional Patterns

Deze pagina is de startpagina van de Functional Patterns die ik heb gemaakt. Ik heb deze pagina opgedeeld in 3 onderdelen, namelijk;

  • Cleaning/Fitering van data
  • Transformeren van data
  • Verzamelen van data

Dit is een navigatie en elk onderdeel bevat meer informatie over dat onderdeel. Op deze manier is het voor de lezer overzichtelijk waar hij bepaalde informatie kan lezen. Ook is er goed nagedacht wat er in de pagina's komt te staan. De pagina's bevatten compleet gedocumenteerde code-voorbeelden.

βœ… Pagina - Cleaning/Filtering

Op de Cleaning/Filtering pagina van Functional Patterns heb ik onder andere uitgeleged hoe je een nieuw array kunt maken en op welke verschillende manieren dit kan. Dit is een vorm van data cleaning. Verder staat op deze pagina ook een Complex Cleaning Patroon, wat ik hieronder uitgelegd heb. Hierin komt ook zeker filtering aan bod.

βœ… Complex Cleaning Patroon

Ik heb een Complex Cleaning Patroon geschreven die in een paar stappen een aantal cleaning-onderdelen doorgaat. Deze stappen zijn functies die de volgende functie weer aanroept, een zogenoemde function chain. Dit heb ik gemaakt, omdat dit onderdeel miste bij het eerste beoordelingmoment. Het was aan het begin vooral even zoeken wat dit patroon precies moest doen. Maar toen ik een doel voor mezelf stelde, ging ik dat uitschrijven in code comments en van boven naar beneden dat uitwerken met code. Uiteindelijk is het gelukt en heb ik er ook best wel veel van geleerd. Van vieze, smerige data kan je met behulp van het Complex Cleaning Patroon hele schone en heldere data maken. Het Complex Cleaning Patroon is hier gedocumenteerd. Ik heb naderhand het Complex Cleaning Patroon ook nog van ES5 van ES6 getransformeerd. De normale 'regular' functies zijn vervangen door arrow functies. Bovendien heb ik sommige functies herschreven, zodat ze korter worden en dat het meteen duidelijk is wat het doel van die functie is.

βœ… Pagina - Transforming

Op deze pagina leg ik uit hoe ik omga met data transforming. Ook ben ik bezig geweest met het transformeren van twee data keys: tijdreisJaar en waaromTijdreizenNaarJaar. Deze twee data keys heb ik samen genest onder een zelf verzonnen data key genaamd tijdreis. Ik heb dit gedaan om aan te tonen dat ik dit beheers en ik heb dit ook uiteindelijk gebruikt bij Frontend-Data. Echter merkte Laurens dit ook op toen hij mijn wiki ging bekijken, dat hij dit miste, dat is ook zeker een reden dat ik dit heb uitgewerkt. Het is mij nu een stuk duidelijker wat het verschil is tussen de verschillende manieren van het behandelen (schoonmaken) van data.

Hieronder laat ik zien hoe zo'n data object eruit ziet:

{
    tijdreis: {
        tijdreisJaar: "05-05-1945",
        waaromTijdreizenNaarJaar: 'Bevrijdingsdag'
    },
}

βœ… Herindeling wiki

De wiki heb ik geheel opnieuw ingedeeld. Ik heb dit gedaan, omdat ik meerdere malen als feedback kreeg dat mijn wiki niet echt overzichtelijk was. Onderdelen waren moeilijk te vinden, zeiden ze. Ik heb dit probleem aangepakt door opnieuw te kijken uit welke onderdelen mijn wiki bestaat en wat nou essentieel is. Ik ben dus eerst de navigatie gaan maken, om de onderdelen in hiΓ«rarchische volgorde de zetten. Vervolgens ben ik gaan kijken of er onderdelen in zaten die niet relevant waren. Als dat zo was, heb ik die gelijk verwijderd. Verder heb ik goed gekeken waar een onderdeel verder uit kan bestaan (nesten). Dit heb ik dan toegepast, zodat de lezer goed wordt meegenomen en geleid in het verhaal.

Clone this wiki locally