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
next
Slide 1: Slide
ICTMBOStudiejaar 4

This lesson contains 31 slides, with interactive quizzes and text slides.

time-iconLesson duration is: 60 min

Items in this lesson

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 - Slide

This item has no instructions

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 - Slide

This item has no instructions

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

Slide 3 - Slide

TODO: dit kan misschien wat concreter gemaakt worden.
Codekwaliteit

Slide 4 - Mind map

This item has no instructions

Doel

Onderhoudbaarheid
Leesbaarheid
Herbruikbaarheid
Veiligheid
Snelheid

Slide 5 - Slide

This item has no instructions

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 - Slide

This item has no instructions

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 - Slide

This item has no instructions

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 - Slide

This item has no instructions

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

Slide 9 - Slide

This item has no instructions

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

Slide 10 - Slide

This item has no instructions

Doel

Onderhoudbaarheid
Leesbaarheid
Herbruikbaarheid
Veiligheid
Snelheid

Slide 11 - Slide

This item has no instructions

Doel

Onderhoudbaarheid
Leesbaarheid
Herbruikbaarheid
Veiligheid
Snelheid

Slide 12 - Slide

This item has no instructions

Welke code is beter onderhoudbaar?
A
B

Slide 13 - Quiz

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 - Slide

This item has no instructions

Welke code is beter leesbaar?
A
B

Slide 15 - Quiz

Benadruk vooral de naamgeving, maar ook de type indicaties.

Slide 16 - Slide

Wat is dit voor score? Wat doet de bonus?

Slide 17 - Slide

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 - Slide

This item has no instructions

Slide 19 - Slide

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 - Slide

This item has no instructions

Security

Slide 21 - Mind map

This item has no instructions

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

Slide 22 - Slide

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 - Slide

Injection time!

Slide 24 - Open question

This item has no instructions

Injection
username: ' OR 1=1 --

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

Slide 25 - Slide

This item has no instructions

Gebruik prepared statements!

Slide 26 - Slide

This item has no instructions

Frontend
Backend

Slide 27 - Slide

This item has no instructions

Wat was het probleem met die frontend-backend code?

Slide 28 - Open question

This item has no instructions

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 - Slide

This item has no instructions

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 - Slide

This item has no instructions

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 - Slide

This item has no instructions