* **New Features** * Time and delay utilities added (ticks, ms, µs); SD card now uses an expansion-header CS pin; HTTP downloads warn when run on the GUI task and yield to avoid blocking. * **Bug Fixes / Reliability** * Many hard-crash paths converted to guarded checks to reduce abrupt termination and improve stability. * **Tests** * Unit tests added to validate time and delay accuracy. * **Chores** * License header and build/macro updates.
1.5 KiB
C++ coding Style
The basic formatting rules are set in .clang-format. Use auto-formatting in your editor.
All code should target C++ language revision 20.
If you use CLion, please enable the setting called "Enable ClangFormat" under Settings > Editor > Code Style.
Naming
Files
Files are upper camel case.
- Files:
^[0-9a-zA-Z]+$ - Directories:
^[0-9a-zA-Z]+$
Example:
SomeFeature.cpp
SomeFeature.h
Private/internal headers are postfixed with Private before the file extension.
Like SomeFeaturePrivate.h
Folders
Project folders include:
Sourcefor source files and public header filesPrivatefor private header filesIncludefor projects that require separate header files
Sources for a specific namespace must go into a folder with the lowercase name of that namespace. The only exception to this is the root namespace, as this doesn't require its own subfolder.
Function names
Names are lower camel case.
Example:
void getLimit() {
// ...
}
Type names
Consts are lower camel case with capital letters.
Typedefs for structs, classes and datatype aliases are upper camel case.
Examples:
typedef uint32_t ThreadId;
const ThreadId id;
struct ThreadData {
// ...
};
Enumerations
enum class or enum struct is preferred over plain enum because of scoping. It's styled like this:
enum class {
Ok,
NotSupported,
Error
};
Exceptions
Don't ever throw them. Make a return type that wraps all the error and success scenarios that are relevant.