Skip to content

Coding conventions

Taal

De volgende taal is geadviseerd:

Onderdeel Taal Reden
Source Code (+commentaar) Engels (UK) Dit is de defacto standaard. STM32 code is in Engels, voorbeelden zijn in Engels en documentation op Internet ook
Documentatie (buiten source code) Nederlands Ge Wit't Oit Noit Nie is een Nederlandse lokale vereniging. Standaard taal is Nederlands. De documentatie sluit daar beter op aan

Leesbaarheid

De code dient leesbaar geshreven te worden. Dit houdt in dat er zoveel mogelijk woorden uitgeschreven worden en geen afkortingen gebruikt worden.

Voorbeelden:

  • get_time: Correct
  • gt_tm: Niet correct

Note

Wanneer een prefix gedaan wordt binnen een header om de functies uniek te maken, dan is dit toegestaan: is_get_time voor een functie binnen de internal_sensor header file.

Bestandsnamen

lower_case

Wanneer je eigen bestanden toevoegd (zoals in de docs/ folder), dan wordt dit altijd in lower_case gedaan.

Waarschuwing

Als uitzondering zijn "CONTRIBUTING.md", "README.md" en "LICENSE". Deze volgen een algemene conventie. Bestanden die gemaakt zijn STM32CubeMX zijn ook uitgezonderd.

Underscore

Wanneer een bestandsnaam uit meerdere woorden bestaad (zoals in dit bestand), dan wordt er altijd gebruik gemaakt van een underscore.

Declaraties

structure

Wanneer een structure aangemaakt wordt, dan wordt deze in lowercase geschreven. Geen toevoegingen, maar wel _ om woorden te scheiden.

typedef struct program_controller_registers
{
    uint8_t instruction_pointer;
    uint8_t shutdown_instruction_pointer;
};

typdef defenities

Een typedef wordt geschreven in lowercase. Tevens wordt de toevoeging _t gedaan om te benadrukken dat het een typedef is.

typedef struct
{
    uint8_t instruction_pointer;
    uint8_t shutdown_instruction_pointer;
} program_controller_registers_t;

Enumeraties

Enumeraties worden in hoofdletters geschreven. Wanneer een typedef gemaakt wordt van een enumeratie dan wordt deze (in tegenstellign tot typedef) met hoofdtellers geschreven en zonder _t

typedef enum
{
    // Control flow
    OPCODE_HALT = 0x00,
    OPCODE_JUMP = 0x01,
    OPCODE_STORE_SHUTDOWN_INDEX = 0x02,

    // Specific
    OPCODE_PIN_TOGGLE = 0x10,
    OPCODE_PIN_STATE = 0x11,

    // Program related
    OPCODE_DELAY = 0x20,
    OPCODE_LOG_PROGRAM_STATE = 0x21,

} OPCODE;

Markdown

Voor de documentatie word gebruik gemaakt van Markdown. Meer specifiek de GitHub variant: GitHub specificatie

Voor de callouts (WARNING, INFO, ...) wordt gebruik gemaakt van de admonitations plugin. Deze heeft een speciale manier voor het maken van de waarschuwing, informatie of voorbeeld boxen. Zie de link voor meer informatie.