-
Notifications
You must be signed in to change notification settings - Fork 0
Coding Guidelines (CPP)
Disclaimer: Not all ACRE2's code complies with the below coding guidelines, we are working towards improving as much as we can!
All indents should be four normal spaces.
All variable names should follow snake_formatting
, with all letters in lowercase. Variable names should not start with a number.
Examples:
uint32_t my_number = 1;
std::string test_string = "abc";
Arguments to any function, method, constructor, etc should be suffixed with a single _
.
Examples:
void some_function(uint32_t arg_);
class test_class {
public:
test_class(std::string string_);
};
Opening braces should always be on the same line as their block identifier (such as if
, else
, for
, etc). All closing braces should be on their own line.
Examples:
if(test) {
// do something
}
else {
// something else
}
for(auto it : some_list_) {
// blah blah
}
void some_function() {
// implementation
}
All namespaces should be descendants of intercept::
. Namespaces that are meant to hold internal or implementation specific code not exposed readily to end users should be prefixed with two (2) underscores __
.
namespace acre {
namespace __my_helpers {
// internal helper functions
}
namespace my_functionality {
// exposed namespace that might implement above helpers
}
}
All classes should strictly maintain separation between declarations and definitions. There should always be a corresponding .cpp
file for every .hpp
file that defines a class. Furthermore it is recommended, but not required that all classes be implemented in their own declaration and definition files. Developers should make judgement calls on when they feel a class should be split out into its own files.
All protected/private members and methods should be prefixed with a single _
to provide easy identification that the value is not in the public scope.
Example:
//test_class.hpp
class test_class {
public:
test_class(uint32_t init_);
protected:
uint32_t _val;
};
//test_class.cpp
test_class::test_class(uint32_t init_) : _val(init_) {};
All templates should use capital letters or words that start with capital letters that describe what they are are templating.
Example:
template<typename T, size_t Size>
class stack_array {
public:
T array_holder[Size];
};
User Guides
- Feature List
- Installation Instructions
- Basic Concepts
- Direct Speech
- Radio Signal Loss
- Radio Guides
- Technical Details
API
Development