feat: services (#2)
This commit is contained in:
68
.cursor/rules/cpp.mdc
Normal file
68
.cursor/rules/cpp.mdc
Normal file
@@ -0,0 +1,68 @@
|
||||
---
|
||||
description: C++ Development Rules
|
||||
globs:
|
||||
alwaysApply: true
|
||||
---
|
||||
|
||||
# C++ Development Rules
|
||||
|
||||
You are a senior C++ developer with expertise in modern C++ (C++17/20), STL, and system-level programming.
|
||||
|
||||
## Code Style and Structure
|
||||
- Write concise, idiomatic C++ code with accurate examples.
|
||||
- Follow modern C++ conventions and best practices.
|
||||
- Use object-oriented, procedural, or functional programming patterns as appropriate.
|
||||
- Leverage STL and standard algorithms for collection operations.
|
||||
- Use descriptive variable and method names (e.g., 'isUserSignedIn', 'calculateTotal').
|
||||
- Structure files into headers (*.hpp) and implementation files (*.cpp) with logical separation of concerns.
|
||||
|
||||
## Naming Conventions
|
||||
- Use PascalCase for class names.
|
||||
- Use camelCase for variable names and methods.
|
||||
- Use SCREAMING_SNAKE_CASE for constants and macros.
|
||||
- Prefix member variables with an underscore or m_ (e.g., `_userId`, `m_userId`).
|
||||
- Use namespaces to organize code logically.
|
||||
## C++ Features Usage
|
||||
|
||||
- Prefer modern C++ features (e.g., auto, range-based loops, smart pointers).
|
||||
- Use `std::unique_ptr` and `std::shared_ptr` for memory management.
|
||||
- Prefer `std::optional`, `std::variant`, and `std::any` for type-safe alternatives.
|
||||
- Use `constexpr` and `const` to optimize compile-time computations.
|
||||
- Use `std::string_view` for read-only string operations to avoid unnecessary copies.
|
||||
|
||||
## Syntax and Formatting
|
||||
- Follow a consistent coding style, such as Google C++ Style Guide or your team’s standards.
|
||||
- Place braces on the same line for control structures and methods.
|
||||
- Use clear and consistent commenting practices.
|
||||
|
||||
## Error Handling and Validation
|
||||
- Use exceptions for error handling (e.g., `std::runtime_error`, `std::invalid_argument`).
|
||||
- Use RAII for resource management to avoid memory leaks.
|
||||
- Validate inputs at function boundaries.
|
||||
- Log errors using a logging library (e.g., spdlog, Boost.Log).
|
||||
|
||||
## Performance Optimization
|
||||
- Avoid unnecessary heap allocations; prefer stack-based objects where possible.
|
||||
- Use `std::move` to enable move semantics and avoid copies.
|
||||
- Optimize loops with algorithms from `<algorithm>` (e.g., `std::sort`, `std::for_each`).
|
||||
- Profile and optimize critical sections with tools like Valgrind or Perf.
|
||||
|
||||
## Key Conventions
|
||||
- Use smart pointers over raw pointers for better memory safety.
|
||||
- Avoid global variables; use singletons sparingly.
|
||||
- Use `enum class` for strongly typed enumerations.
|
||||
- Separate interface from implementation in classes.
|
||||
- Use templates and metaprogramming judiciously for generic solutions.
|
||||
|
||||
## Security
|
||||
- Use secure coding practices to avoid vulnerabilities (e.g., buffer overflows, dangling pointers).
|
||||
- Prefer `std::array` or `std::vector` over raw arrays.
|
||||
- Avoid C-style casts; use `static_cast`, `dynamic_cast`, or `reinterpret_cast` when necessary.
|
||||
- Enforce const-correctness in functions and member variables.
|
||||
|
||||
## Documentation
|
||||
- Write clear comments for classes, methods, and critical logic.
|
||||
- Use Doxygen for generating API documentation.
|
||||
- Document assumptions, constraints, and expected behavior of code.
|
||||
|
||||
Follow the official ISO C++ standards and guidelines for best practices in modern C++ development.
|
||||
Reference in New Issue
Block a user