Skip to main content

programming-cpp-naming-rules

C++ file and class naming conventions - folder structure matches namespaces, no redundant prefixes

Aller à l'installation

Informations de source

Dépôt
ROCm/rocprofiler-systems-skills
Dernière activité de la source
9 février 2026 à 09:12
Langue détectée de SKILL.md
anglais
Étoiles
4
Forks
0

Options d'installation

Le prompt qui vérifie d'abord la source est sélectionné par défaut. Vous pouvez passer à une commande directe ou télécharger une copie locale.

Vérifiez les fichiers source

Lisez SKILL.md et les fichiers associés affichés par SkillsMP avant de décider de l'installer.

Affichage de SKILL.md

SKILL.md
Instructions source · Aperçu en lecture seule
name
programming-cpp-naming-rules
description
C++ file and class naming conventions - folder structure matches namespaces, no redundant prefixes
# C++ Naming Rules Use this skill when creating new C++ files or refactoring file structure. ## Folder Structure = Namespace Folder structure should correspond to namespaces. Don't repeat namespace prefixes in filenames. ```cpp // ❌ BAD: amd_smi/amd_smi_driver.hpp namespace amd_smi { class amd_smi_driver {}; // Redundant prefix } // ✅ GOOD: amd_smi/driver.hpp namespace amd_smi { class driver {}; // Clean, folder provides context } ``` ## Rules 1. **No redundant prefixes**: If file is in `amd_smi/`, don't name it `amd_smi_driver.hpp` - use `driver.hpp` 2. **Namespace = folder path**: `foo/bar/baz.hpp` → `namespace foo::bar { class baz {} }` 3. **Class name = file name**: `driver.hpp` contains `class driver` or `struct driver` 4. **One class per file** (when practical): Easier to find and maintain ## Examples | Folder Path | File Name | Namespace | Class/Struct | |-------------|-----------|-----------|--------------| | `amd_smi/` | `driver.hpp` | `amd_smi` | `driver` | | `amd_smi/gpu/` | `metrics.hpp` | `amd_smi::gpu` | `metrics` | | `core/utils/` | `string_helper.hpp` | `core::utils` | `string_helper` | | `network/http/` | `client.hpp` | `network::http` | `client` | ## Nested Namespaces (C++17) Use nested namespace syntax when declaring: ```cpp // ✅ GOOD: C++17 nested namespace namespace network::http { class client { // ... }; } // namespace network::http // ❌ AVOID: Old style (more verbose) namespace network { namespace http { class client { // ... }; } // namespace http } // namespace network ``` ## Include Guards / #pragma once Match the full path in include guards: ```cpp // File: amd_smi/gpu/metrics.hpp #pragma once // Preferred // OR traditional include guard matching full path: #ifndef AMD_SMI_GPU_METRICS_HPP #define AMD_SMI_GPU_METRICS_HPP // ... #endif // AMD_SMI_GPU_METRICS_HPP ``` ## Summary - **Folder = namespace context** - don't repeat it in filenames - **Filename = class name** - easy to find - **Path tells the full story**: `project/module/submodule/class.hpp`
Voir sur GitHub