Loading...
Searching...
No Matches
✅ Naming Conventions
- Types (classes, structs, typedefs):
CamelCase
(e.g., MyClass
)
- Functions & Variables:
camelCase
(e.g., parseMessage
, bufferSize
)
- Constants:
kCamelCase
(e.g., kMaxSize
)
- Namespace names:
lowercase_with_underscores
- Macros & Enums:
ALL_CAPS_WITH_UNDERSCORES
- File names:
lowercase_with_underscores.h/.cc
🔒 Private Member Variables
- Named using
camelCase
- Suffixed with an underscore (
_
)
✅ Formatting
- Indentation: 2 spaces, no tabs
- Line length: 80 characters preferred, up to 100 allowed
- Braces:
- Opening brace on the same line (
K&R style
)
- Always use braces, even for single-line blocks
✅ Comments
- Use
//
for inline comments.
- Use
///
or /** */
for documentation comments.
- The preference for Doxygen comments is as follows:
- Use /// for one-line Doxygen comments.
- Use /** */ for multi-line Doxygen comments.
- Keep comments up to date and explain **"why"**, not just **"what"**.
✅ Function Design
- Prefer short functions that do one thing.
- Use default values for parameters sparingly.
- Avoid output parameters; return values instead when possible.
✅ Class Design
- Make data members private.
- Use
= delete
for disallowed constructors/assignment.
- Use
explicit
for single-argument constructors.
- Prefer initializer lists in constructors.
✅ Use of Pointers and References
- Use
const T&
for read-only inputs.
- Use raw pointers only for non-owning references.
- Use
std::unique_ptr
or std::shared_ptr
for ownership.
✅ Memory Management
- Prefer smart pointers over raw
new
/delete
.
- Avoid manual memory management unless absolutely necessary.
✅ Header Files
- Use include guards or
#pragma once
.
- Keep headers self-contained and minimal.
- Prefer forward declarations when possible.
✅ Miscellaneous
- Avoid
using namespace std;
.
- Prefer
nullptr
over NULL
or 0
.
- Avoid using directives in headers.
- Prefer range-based for loops and
auto
where appropriate.
🚫 What to Avoid
- Avoid
using namespace std;
It can introduce name conflicts and make the code harder to maintain.
- Avoid Magic Numbers
Use named constants or constexpr
for values used throughout the code.
- Avoid Direct
new
/delete
Usage
Prefer smart pointers (std::unique_ptr
, std::shared_ptr
) for automatic memory management.
- Avoid
NULL
or 0
for Pointers
Always use nullptr
to initialize or check pointers.
- Avoid Implicit Type Conversions
Use explicit
for single-argument constructors to prevent accidental conversions.
- Avoid Non-Const Global or Static Variables
Minimize the use of global or static variables as they can introduce bugs and make state management harder.
- Avoid Using Raw Loops When Possible
Use range-based for loops or standard algorithms for better readability and maintainability.
- Avoid Non-Descriptive Names
Always use meaningful and descriptive names for variables, functions, and classes.
- Avoid Large Functions or Classes
Keep functions and classes small and focused on a single responsibility.
- Avoid Overloading Operators Without Good Reason
Operator overloading can reduce code clarity if misused.
- Avoid Mixing Style Between Header and Source Files
Declarations should go in header files, and definitions should go in source files.