Skip to main content

programming-cpp-naming-rules

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

الانتقال إلى التثبيت

معلومات المصدر

المستودع
ROCm/rocprofiler-systems-skills
آخر نشاط في المصدر
٩ فبراير ٢٠٢٦ في ٠٩:١٢
لغة SKILL.md المكتشفة
الإنجليزية
النجوم
٤
التفرعات
٠

خيارات التثبيت

يُحدَّد Prompt الذي يراجع المصدر أولًا بشكل افتراضي. يمكنك التبديل إلى أمر مباشر أو تنزيل نسخة محلية.

مراجعة ملفات المصدر

اقرأ SKILL.md وأي ملفات مرافقة يعرضها SkillsMP قبل أن تقرر التثبيت.

عرض SKILL.md

SKILL.md
تعليمات المصدر · معاينة للقراءة فقط
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`
عرض على GitHub