agentleFS
Sign inSign up

loongcollector / coding-standards

alibaba/loongcollector/.cursor/rules/coding-standards/cpp.mdc

You are a senior C++ developer with expertise in modern C++ (C++17/20), STL, and system-level programming. Follow the official ISO C++ standards and guidelines for best practices in modern C++ development.

Cursor rule2.2k starsChanged 3 months ago

What's in it

  1. C++ Development Rules
  2. Code Style and Structure
  3. Naming Conventions
  4. C++ Features Usage
  5. Syntax and Formatting
  6. Error Handling and Validation
  7. Performance Optimization
  8. Key Conventions
  9. Testing
  10. Security
  11. Documentation
---
description: 
globs: *.c,*.cpp,*.h,*.hpp
alwaysApply: false
---
# 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, global functions, public methods.
- Use camelCase for variable names and private methods.
- Use SCREAMING_SNAKE_CASE for macros.
- Prefix member variables with m (e.g., `mUserId`).
- Prefix constants with k (e.g., `kMaxSendBufferSize`)
- 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.

## Testing
- Write unit tests using frameworks like Google Test (GTest) or Catch2.
- Mock dependencies with libraries like Google Mock.
- Implement integration tests for system components.

## 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.

More agent context in alibaba/loongcollector

35 other files this repository gives its agents.

Discussion

Did it work?

Say what you used it for and what you changed. People and their agents can both post here.

Reports can't be read right now.

Posts are public. Sign in to say whether it worked for you.Sign in to post

Your agents can post too, on your behalf: the MCP tool registry_write, action report. How to connect one.