Cpp
Guidelines for modern C++ development with C++17/20 standards, memory safety, and performance opt…
by mindrally · Apache-2.0
The skill
Guidelines for modern C++ development with C++17/20 standards, memory safety, and performance optimization
C++ Development Guidelines
You are an expert in modern C++ development with deep knowledge of C++17/20 standards, memory management, and high-performance programming.
Code Style and Structure
- Write clean, modern C++ code following C++17/20 standards
- Use meaningful variable and function names
- Follow the Single Responsibility Principle
- Prefer composition over inheritance
- Keep functions small and focused
Naming Conventions
- Use PascalCase for classes and structs
- Use camelCase for functions, variables, and methods
- Use SCREAMING_SNAKE_CASE for constants and macros
- Use snake_case for namespaces
- Prefix member variables with
m_or use trailing underscore
Memory Management
Smart Pointers
- Use
std::unique_ptrfor exclusive ownership - Use
std::shared_ptronly when shared ownership is required - Use
std::weak_ptrto break circular references - Avoid raw owning pointers
RAII (Resource Acquisition Is Initialization)
- Use RAII for all resource management
- Wrap resources in classes with proper destructors
- Ensure exception safety through RAII
- Use scope guards for cleanup operations
Best Practices
- Prefer stack allocation over heap allocation
- Use
std::make_uniqueandstd::make_shared - Avoid
newanddeletein application code - Use containers instead of raw arrays
Modern C++ Features
C++17 Features
- Use structured bindings for tuple unpacking
- Use
std::optionalfor values that may not exist - Use
std::variantfor type-safe unions - Use
if constexprfor compile-time conditionals - Use
std::string_viewfor non-owning string references
C++20 Features
- Use concepts for template constraints
- Use ranges for cleaner algorithms
- Use
std::spanfor non-owning array views - Use coroutines for asynchronous operations
- Use modules for faster compilation (when supported)
Error Handling
- Use exceptions for error handling
- Define custom exception types for domain-specific errors
- Use
noexceptfor functions that don't throw - Catch exceptions by const reference
- Provide strong exception guarantees where possible
Performance
- Use
constandconstexprliberally - Prefer move semantics with
std::move - Use perfect forwarding with
std::forward - Avoid unnecessary copies
- Profile before optimizing
- Use
inlinefor small frequently-called functions
Security
Buffer Safety
- Use
std::arrayinstead of C-style arrays - Use
std::vectorwith bounds checking - Prefer
std::stringover C-style strings - Use
std::spanfor array views
Type Safety
- Avoid C-style casts; use
static_cast,dynamic_cast, etc. - Use
enum classinstead of plain enums - Use
nullptrinstead ofNULL - Enable compiler warnings and treat them as errors
Concurrency
- Use
std::threadandstd::jthreadfor threading - Use
std::mutexandstd::lock_guardfor synchronization - Use
std::atomicfor lock-free operations - Prefer
std::asyncfor simple async operations - Use condition variables for thread coordination
Testing
- Write unit tests with Google Test or Catch2
- Use mocking frameworks like Google Mock
- Test edge cases and error conditions
- Use sanitizers (ASan, UBSan, TSan) during testing
- Implement continuous integration testing
Documentation
- Use Doxygen-style comments for documentation
- Document public APIs thoroughly
- Include usage examples in documentation
- Keep documentation up to date with code changes
- Document thread safety requirements
Build System
- Use CMake for cross-platform builds
- Organize code into logical modules
- Use package managers (vcpkg, Conan) for dependencies
- Enable compiler warnings and static analysis
- Configure proper debug and release builds
Use this skill
Connect your agent to the Skill Store MCP server and ask for it by ref: mindrally/cpp-25048989624.
Details
- Publisher
- mindrally
- Category
- Software Development › Languages & frameworks
- License
- Apache-2.0
- Updated
- 2026-10-08
References
More from mindrally
- Accessibility A11Y Implement web accessibility (a11y) best practices following WCAG guidelines to create inclusive,…
- Alpine Js Alpine.js development guidelines for lightweight reactive interactions with Tailwind CSS and vari…
- Analytics Data Analysis Best practices for analytics, data analysis, and visualization using Python, pandas, matplotlib,…
- Android Development Android development guidelines for Kotlin with clean architecture, MVI pattern, Material Design,…