Project Kaders¶
author: | Albert |
---|
Platform¶
De software moet (uiteindelijk) werken op een (elke) RaspberryPi. Het moet ook werken op elk PC-type computer (Mac, Unix/Linux en Windows); vooral om het ontwikkelen eenvoudiger te maken. (Ook voor demo’s en testen)
Taal¶
De programmeertaal mag gekozen worden uit: Python(3) [1] en/of C* [2]; vooral de aanwezige (taal)kennis van de studenten is van belang.
Wel moet altijd een (kleine) Python-3 API gemaakt worden. Zodat de gehele robot vanuit python aangestuurd kan worden.
Verder:
- Alle documentatie wordt gemaakt met Sphinx; in rst-files en/of in Python docstrings,
- Alle files moeten opgeslagen worden in UTF-8, met standard (unix) regeleindes (dus zonder
^M
; zoals op Windows)
GUI/Editors¶
De keuze voor een editor is vrij. Wel moet deze alle alle “file-eisen” ondersteunen (zoals ^J
regeleindes, utf-8, indentatie met spaties, etc).
Kwaliteit¶
TDD¶
Het gebruiken van de Test-Driven-Development aanpak is verplicht; zowel op unit-, module- en systeem-level.
- Zorg dat ieder (onder)deel los van andere testbaar is (decoupling)
- Voor elke functie, class en/of file moeten ”voldoende” unit-test geschreven worden
- Gebruik bij voorkeur pytest
- ”Voldoende”:
- Elke regel, elk statement moet minimaal eenmaal doorlopen worden (in een test)
- Voor een
if
zijn dus minimaal 2 tests nodig; bij genesteif’s
verdubbeld dat telkens! - Niet het aantal testen is belangrijk, maar de zekerheid dat code (wijziging)
- Ook modele (andere) levels moeten voldoende (automatiche) testen opgeleverd worden; die aantonen dat ‘t werkt.
Code-kwaliteit¶
Het gebruik van pylint en/of andere code-checkers is verplicht. Bij elke (sprint) oplevering moet de kwaliteit aangetoond worden
Code reviews zijn verplicht; zowel op functionele correctheid, als lees- & onderhoudbaarheid. Toon dit aan! (gebruik de bitbucket fasaliteiten)
Dit geldt ook voor documentatie; behalve voor (eigen) ‘team-pages’
Footnotes
[1] | Python heeft op dit moment de voorkeur. Vooral omdat de meeste deelnemers weinig (C) programmeer-ervaring hebben (zeker in de C-taal). |
[2] | C*: C, C++, Objective-C, of C#; de laatste (twee) zijn hier nauwelijks een optie gezien het platform. |