H10: Codekwaliteit

H10: Codekwaliteit


"Always code as if the guy who ends up
maintaining your code will be a violent
psychopath who knows where you live."
1 / 31
volgende
Slide 1: Tekstslide
ICTMBOStudiejaar 4

In deze les zitten 31 slides, met interactieve quizzen en tekstslides.

time-iconLesduur is: 60 min

Onderdelen in deze les

H10: Codekwaliteit


"Always code as if the guy who ends up
maintaining your code will be a violent
psychopath who knows where you live."

Slide 1 - Tekstslide

Deze slide heeft geen instructies

Leerdoelen
Aan het einde van deze les weet je:
  • Waarom je hoge kwaliteit code zou moeten schrijven.
  • Waar je goede kwaliteit code aan kunt herkennen
  • Hoe je zelf code kunt schrijven van hoge kwaliteit

Slide 2 - Tekstslide

Deze slide heeft geen instructies

Exameneis
Code die netjes in elkaar zit is een eis op het examen!

Slide 3 - Tekstslide

TODO: dit kan misschien wat concreter gemaakt worden.
Codekwaliteit

Slide 4 - Woordweb

Deze slide heeft geen instructies

Doel

Onderhoudbaarheid
Leesbaarheid
Herbruikbaarheid
Veiligheid
Snelheid

Slide 5 - Tekstslide

Deze slide heeft geen instructies

Onderhoudbaar
Je code is te onderhouden door jezelf maar ook vooral door anderen.
Het is makkelijk om aanpassingen te maken aan je code op een enkele plek.

Slide 6 - Tekstslide

Deze slide heeft geen instructies

Leesbaarheid
Je code is makkelijk te lezen en begrijpen.
Door jezelf.
Ook door developers die pas net aan een project komen.
Ook door developers die nog relatief nieuw zijn.

Slide 7 - Tekstslide

Deze slide heeft geen instructies

Herbruikbaar
Code die je schrijft is inzetbaar voor meerdere doeleinden.
Als een functie voor meerdere dingen gebruikt kan worden doe je dat ook

Slide 8 - Tekstslide

Deze slide heeft geen instructies

Veilig
Code heeft validaties op input en is niet vatbaar voor veelvoorkomende veiligsheidsissues.

Slide 9 - Tekstslide

Deze slide heeft geen instructies

Snelheid
Je code is niet onnodig traag en verwerkt gegevens op een redelijk tempo zonder onnodige stappen te doen.

Slide 10 - Tekstslide

Deze slide heeft geen instructies

Doel

Onderhoudbaarheid
Leesbaarheid
Herbruikbaarheid
Veiligheid
Snelheid

Slide 11 - Tekstslide

Deze slide heeft geen instructies

Doel

Onderhoudbaarheid
Leesbaarheid
Herbruikbaarheid
Veiligheid
Snelheid

Slide 12 - Tekstslide

Deze slide heeft geen instructies

Welke code is beter onderhoudbaar?
A
B

Slide 13 - Quizvraag

Benadruk dat het DRY principe ervoor zorgt dat je dingen niet op meerdere plekken aan hoeft te passen.
Onderhoudbaarheid
Simpele logica
DRY (Don't repeat yourself)
Dingen netjes uitgesplitst in functies of modules

Slide 14 - Tekstslide

Deze slide heeft geen instructies

Welke code is beter leesbaar?
A
B

Slide 15 - Quizvraag

Benadruk vooral de naamgeving, maar ook de type indicaties.

Slide 16 - Tekstslide

Wat is dit voor score? Wat doet de bonus?

Slide 17 - Tekstslide

Beetje veel tekst, maar extra documentatie helpt bij begrijpen wat deze functie doet.
Leesbaarheid
Consistente naamgevingen
Goede indentation
Documentatie of docstrings waar mogelijk
Optionele type definitions waar logisch

Slide 18 - Tekstslide

Deze slide heeft geen instructies

Slide 19 - Tekstslide

Uitvragen waarom dit een slechte functie is op deze manier? Waarom is dit slecht leesbaar?
Uitgebreide docstring maakt duidelijk wat dit voor functie is, maakt informatie beschikbaar in je IDE.
Type definitions maakt het duidelijker welke argumenten geaccepteerd worden en wat er terugkomt
Switch statement maakt het duidelijker wat de opzet is van deze functie
Robuust omgaan met onverwachte input.

Commentje erbij is periodiek ook een goede verduidelijking.

Slide 20 - Tekstslide

Deze slide heeft geen instructies

Security

Slide 21 - Woordweb

Deze slide heeft geen instructies

Security
Front-end validaties ook op de backend.
Niet kwetsbaar voor SQL injections.
Meer ...?

Slide 22 - Tekstslide

Benadruk dat hiermee de kous niet af is op het gebied van veilig programmeren, maar dat dit is waar we ons vandaag op richten.

Slide 23 - Tekstslide

Injection time!

Slide 24 - Open vraag

Deze slide heeft geen instructies

Injection
username: ' OR 1=1 --

 "SELECT * FROM users WHERE username = '' or 1=1 -- ' AND password = '$password'";

Slide 25 - Tekstslide

Deze slide heeft geen instructies

Gebruik prepared statements!

Slide 26 - Tekstslide

Deze slide heeft geen instructies

Frontend
Backend

Slide 27 - Tekstslide

Deze slide heeft geen instructies

Wat was het probleem met die frontend-backend code?

Slide 28 - Open vraag

Deze slide heeft geen instructies

Backend validaties
In het algemeen:
  • Valideer altijd input die je krijgt van de gebruiker.
  • De frontend code kan makkelijk worden aangepast, dus vertrouw niets wat van een frontend komt.
  • Check altijd extra je voorwaarden op de backend!
Dit geldt voor zowel web- als native-applicaties.

Slide 29 - Tekstslide

Deze slide heeft geen instructies

Tips & Tricks
  • Als je hetzelfde stukje code twee keer aan het schrijven bent (of knippen/plakken) ben je waarschijnlijk verkeerd bezig.
  • Bekijk je code na het schrijven eens vanuit het perspectief van een nieuw iemand.
  •  Kijk ook eens naar de mogelijkheden van automatische tools (linters, static analysis tools, etc) en luister naar je IDE.

Slide 30 - Tekstslide

Deze slide heeft geen instructies

Weekcheck

Op its learning, onder PRO E+F > WED: Kwaliteit van code
Twee keer drie scriptjes (voor WEB en NATIVE)
De drie scriptjes hebben allemaal hun eigen problemen op gebied van kwaliteit.
Fix ze, en leg uit wat je gefixt hebt.

Slide 31 - Tekstslide

Deze slide heeft geen instructies