1 Home
MoD edited this page 2 weeks ago

Coding Guide

ToDo's and Discussion

Generell

  • Indentation Instead of Tabulator use 4 Spaces
  • Variables Names are in CamelCase
  • Queues Only used in ther own modul
  • Global variables / extern declaration Avoid them - use getter/setter-functions (If it is really needed use include of its header instead of another extern declaration)
  • Follow the rule Code is like humor - if you have to explain it, it's bad

Module

  • Name is a combination of its software layer which its from and the feature of it (TBD prefix "r")
  • Initialization-function is needed by every modul (empty or not) called modulnameInit
  • Every modul (c/cpp) has own (or more) h/hpp files with the same filename (more files use postfix)

Standard: LayerFeature.c and LayerFeature.h

Optional: LayerFeatureUsecase.h

Functions

  • Functions with return only has one return in the last row

Includes

Defines / Macros

  • Start with prefix D_
  • Only use UPPERCASE
  • Use brackets for the value
  • Global defines also have the modulname where they come from
  • Macros use M_ as prefix instead of D_
  • Avoid magic numbers in code and use defines instead
#define D_<MODULNAME_>FEATURE_NAME     (value)   //comment
#define D_STACKSIZE_DEBUG              (0x200)   //bytes
#define D_YARNHANDLE_TIMER_XYZ         (12)      //ms

Enumerations

  • Enumtype start with prefix te followed by Modul which it comes from and the Name d
  • Enumerations start with e followed by Modul, Name (of enum) and _NAME (uppercase for constant name)
  • Set the first enumeration to zero, if possible
typedef enum{
    eModulName_INIT = 0,
    eModulName_START,
    eModulName_END,

    eModulName_NUM
}teModulName;

Structs

  • Name start with prefix ts followed by Modul which it comes from and the Name
typedef struct{
    uint8_t	sFeatureName1;
    int32_t sFeatureName2
}tsModulName;

tsModulName sName = {
    .sFeatureName1 = 0;
    .sFeatureName2 = -12;
};

If / Switch case

  • Curly brackets for every if/else/elseif-case
  • Constants on the left side at if/elseif to avoid "=" instead of "==" bugs
  • Always use default-case in switch
if(0x1337 == variable){
    //code
} else {
    //code
}

if(0x1337 == variable){
    //code
}
else{
    ; //code
}

switch(variable){
    case 0:
        //code
        break;
    default:
        //code or not
        break;
}