# Development Guidelines
- Lastig om code te moeten refactoren
### Code schrijven
- Linter / prettier
- Linter on save -> hele kleine aanpassing kan hele grote MR opleveren
- Losse commits? (1 functioneel / 1 met linting)
- Pijn van in 1x zit in openstaande branches
- ! Maar toch voorkeur voor datum prikken & maar doen -> actiepunt in plan (na ook opruimen van openstaande MR's)
- Davey heeft linter-config WIP
- Gedeelde voor alle typescript in monorepo
- Code schrijven
- Naamgeving
- Op letten bij reviewen!
- Groote van context bepaalt noodzaak voor goede naam (voor tussenvariablen -> 1x gebruiken: naam niet zo boeiend)
- Kotlin/Java: globale variabelen beginnen met m_? -> we hebben moderne IDE's.
- Duidelijkheid voor LOC-count
- Ook al fijn tijdens pair-programmen
- Bij lezen het idee 'dit is magie' -> goeie reden om anders te schrijven (/ review-opmerking te plaatsen)
- Lagere standaard voor front-end, is dat erg?
- (onthouden) voorkomen dynamische indexing tenzij goed getyped
- Plattere code = fijn (weinig geneste if/elses) (-> voorbeeld Davey, zit in Linter)
- Testen
- Nieuwe test hoeft niet veel moeite te kosten
- Mits code zo in elkaar zit dat DB's e.d. makkelijk te mocken zijn (?)
- Belangrijk(ste?) doel -> garantie houden dat bestaande functionaliteiten niet kapot gaan
- Front-end ook belangrijk (bv tours ineens stuk)
- Wel lastig -> veel afhankelijk van aanwezigheid data
- Research nodig
- Onderhoud belangrijk -> verkeerd gestubde DB zorgde voor totaal niet draaien van een set unit-tests
- Consensus: Meer induiken & prio geven
- Documenteren
- In code:
- Comments op functionaliteit wanneer die niet vanzelfsprekend/makkelijk te lezen
- Python: docstrings (tussen functienaam & -body), bevalt goed
- Inline comments (in functieblokken) maakt lezen lastiger -> gebruiken als goeie indicatie van waar splitsen in kleinere functies/files
- Algemeen (voor nieuwe devs -> readme oid)
- API-achtige documentatie (wel automatisch te genereren) & user-guide documentatie (niet)
- Lastig om up-to-date te houden
- Flow-charts (zeker van core-functionaliteit) zijn wel nice
- Praktijk: wordt niet geupdate na aanpassing notificatie-systeem
- Automatisch genereerbaar?
- Mergen
- Groter project: Opsplitsen in losse feature-branches met eigen MR's naar hoofd-project-branch
- Snel branch live zetten zou handig zijn (@Marciano?)
- Reviewen
- Meer ogen is meer beter (1 minimum, maar 2 misschien fijner?)
- Hindernis: switchen naar branch om te reviewen is duur (stashen/bouwen/draaien) -> hangt samen met makkelijk branch opspinnen