- Use modern C++ (C++17/C++20). Prefer RAII for resource management — no manual `new`/`delete`.
- Use `snake_case` for functions/variables, `PascalCase` for types, `UPPER_CASE` for macros.
- Use RAII (Resource Acquisition Is Initialization) for all resource management — wrap raw pointers in `std::unique_ptr` or `std::shared_ptr`.
- Prefer `std::string_view` over `const std::string&` for read-only string parameters — it avoids unnecessary allocations.
- Use smart pointers: `std::unique_ptr` for single ownership, `std::shared_ptr` only when shared ownership is required.
- Prefer `std::string`, `std::vector`, `std::array` over C-style strings and raw arrays.
- Use `const` and `constexpr` aggressively. Mark methods `const` when they don't modify state.
- Use `auto` for complex types, but prefer explicit types when they improve readability.
- Prefer range-based `for` loops and STL algorithms over index-based loops.