...
https://www.doxygen.nl/index.html
Bracket usage
When using brackets, always do
...
Code Block | ||||
---|---|---|---|---|
| ||||
class EncodedPacket {
public:
EncodedPacket(uint8_t *data, uint8_t len);
const uint8_t *getData() const;
uint8_t getLen() const;
DecodedPacket *decode();
private:
const uint8_t * const data;
const uint8_t len;
Static const
void print(){
std::cout << "This is a function!";
}
}; |
Constants
Everything should be a constant reference if possible. By default, functions will make a copy of what is passed in, which we do not want.
Code Block | ||||
---|---|---|---|---|
| ||||
uint8_t const &dataRef = data;
//NOT
uint8_t dataRef = data; |
When initializing a function:
Code Block | ||||
---|---|---|---|---|
| ||||
EncodedPacket(uint8_t *dataRef);
//NOT
EncodedPacket(uint8_t dataRef); |
Constexpr, not Macros
Use constant expressions (constexpr) for small helper functions.
Code Block | ||
---|---|---|
| ||
constexpr int square(int x) { return x*x; }
//NOT
#define SQUARE(r) ((r)*(r))
double square_macro = AREA(4.6); |
Assertions
Occasionally use assert statements to double-check any condition. If the statement inside the assert is false, the program will terminate.
Code Block | ||||
---|---|---|---|---|
| ||||
bool value = 8;
assert(value != NULL);
assert(value == 5); //Program will terminate |