c++ 命名规则

news2025/6/6 21:54:22

目录

    • 总结
    • 1. 类名(Class Names)
    • 2. 变量名(Variable Names)
    • 3. 函数名(Function Names)
    • 4. 宏定义(Macros)
    • 5. 命名空间(Namespaces)
    • 6. 枚举(Enums)和枚举值(Enum Values)
    • 7. 文件名(File Names)
    • 8. 模板参数(Template Parameters)
    • 9. 其他注意事项

总结

总结
类名:大驼峰法(PascalCase)。
变量/函数名:小驼峰法(camelCase)。
全局常量:使用全大写字母加下划线分隔(SNAKE_CASE)。
常量/宏:全大写加下划线(SNAKE_CASE)。
静态成员变量:可加前缀s_或后缀_(团队约定)
命名空间/文件:全小写,可加下划线

在C++编程中,良好的命名规则对于代码的可读性、可维护性和团队协作至关重要。以下是C++中常见的命名规则和最佳实践,按不同标识符类型分类说明:

1. 类名(Class Names)

规则:使用大驼峰命名法(PascalCase),即每个单词的首字母大写,无下划线。

class StudentRecord;
class BankAccountManager;

理由:类名通常代表抽象概念,大驼峰法能清晰区分类与其他标识符。

2. 变量名(Variable Names)

规则:使用小驼峰命名法(camelCase),即首字母小写,后续单词首字母大写。

int studentCount;
double averageScore;

全局常量:使用全大写字母加下划线分隔(SNAKE_CASE)。
const int MAX_STUDENTS = 100;

静态成员变量:可加前缀s_或后缀_(团队约定)。
class Example {

static int s_counter; // 或 static int counter_;
};

3. 函数名(Function Names)

规则:使用小驼峰命名法,动词开头描述行为。

void calculateAverage();
bool isValidInput(const std::string& input);

理由:函数名应明确表达其功能,动词开头有助于理解。

4. 宏定义(Macros)

规则:使用全大写字母加下划线分隔(SNAKE_CASE),并避免与现有标识符冲突。

#define PI 3.14159
#define MAX_BUFFER_SIZE 1024

注意:C++中推荐使用constexpr替代宏定义常量。

5. 命名空间(Namespaces)

规则:使用全小写字母,可加下划线分隔(团队约定)。
namespace company_name {
    namespace project_name {
        // ...
    }
}

理由:避免与类名冲突,保持简洁。

6. 枚举(Enums)和枚举值(Enum Values)

规则:
枚举类型名:使用大驼峰法。
枚举值:使用全大写字母加下划线分隔。

enum class Color { RED, GREEN, BLUE };  // C++11风格
enum ErrorCode { SUCCESS = 0, FILE_NOT_FOUND = 1 };

7. 文件名(File Names)

规则:使用全小写字母,可加下划线或连字符(根据团队约定)。

示例:
student_record.h(头文件)
student_record.cpp(源文件)

理由:保持与类名或模块名的一致性。

8. 模板参数(Template Parameters)

规则:使用大写字母(通常为单字母或简短名称)。
示例:

template <typename T, size_t N>
class Array { /* ... */ };

9. 其他注意事项

避免缩写:除非是广泛认可的缩写(如HTTP、IO)。
一致性:团队内统一命名风格(如是否使用匈牙利命名法)。
描述性:名称应准确反映用途,避免temp、data等模糊名称。
避免保留字:不要使用C++关键字(如class、new)作为标识符。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2400595.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

针对KG的神经符号集成综述 两篇

帖子最后有五篇综述的总结。 综述1 24年TKDD 系统性地概述了神经符号知识图谱推理领域的进展、技术和挑战。首先介绍了知识图谱&#xff08;KGs&#xff09;和符号逻辑的基本概念&#xff0c;知识图谱被视为表示、存储和有效管理知识的关键工具&#xff0c;它将现实世界的知识…

RabbitMQ和MQTT区别与应用

RabbitMQ与MQTT深度解析&#xff1a;协议、代理、差异与应用场景 I. 引言 消息队列与物联网通信的重要性 在现代分布式系统和物联网&#xff08;IoT&#xff09;生态中&#xff0c;高效、可靠的通信机制是构建稳健、可扩展应用的核心。消息队列&#xff08;Message Queues&am…

Axure设计案例:滑动拼图解锁

设计以直观易懂的操作方式为核心&#xff0c;只需通过简单的滑动动作&#xff0c;将拼图块精准移动至指定位置&#xff0c;即可完成解锁。这种操作模式既符合用户的日常操作习惯&#xff0c;在视觉呈现上&#xff0c;我们精心设计拼图图案&#xff0c;融入生动有趣的元素&#…

MySQL权限详解

在MySQL中&#xff0c;权限管理是保障数据安全和合理使用的重要手段。MySQL提供了丰富的权限控制机制&#xff0c;允许管理员对不同用户授予不同级别的操作权限。本文将会对MySQL中的权限管理&#xff0c;以及内核如何实现权限控制进行介绍。 一、权限级别 MySQL 的权限是分层…

解决fastadmin、uniapp打包上线H5项目路由冲突问题

FastAdmin 基于 ThinkPHP&#xff0c;默认采用 URL 路由模式&#xff08;如 /index.php/module/controller/action&#xff09;&#xff0c;且前端资源通常部署在公共目录&#xff08;如 public/&#xff09;下。Uniapp 的历史模式需要将所有前端路由请求重定向到 index.html&a…

web3-区块链的交互性以及编程的角度看待智能合约

web3-区块链的交互性以及编程的角度看待智能合约 跨链交互性 交互性 用户在某一区块链生态上拥有的资产和储备 ​ 目标&#xff1a;使用户能够把资产和储备移动到另一个区块链生态上 可组合性 使在某一区块链的DAPP能调用另一个区块链上的DAPP 如果全世界都在用以太坊就…

数据结构(7)—— 二叉树(1)

目录 前言 一、 树概念及结构 1.1树的概念 1.2树的相关概念 1.3数的表示 1.二叉树表示 2.孩子兄弟表示法 3.动态数组存储 1.4树的实际应用 二、二叉树概念及结构 2.1概念 2.2特殊的二叉树 1.满二叉树 2. 完全二叉树 2.3二叉树的性质 2.4二叉树的存储结构 1.顺序存储 2.链式存储…

如何使用 Docker 部署grafana和loki收集vllm日志?

环境: Ubuntu20.04 grafana loki 3.4.1 问题描述: 如何使用 Docker 部署grafana和loki收集vllm日志? 解决方案: 1.创建一个名为 loki 的目录。将 loki 设为当前工作目录: mkdir loki cd loki2.将以下命令复制并粘贴到您的命令行中,以将 loki-local-config.yaml …

Kafka入门- 基础命令操作指南

基础命令 主题 参数含义–bootstrap-server连接的Broker主机名称以及端口号–topic操作的topic–create创建主题–delete删除主题–alter修改主题–list查看所有主题–describe查看主题的详细描述–partitions设置分区数–replication-factor设置分区副本–config更新系统默认…

目标检测我来惹1 R-CNN

目标检测算法&#xff1a; 识别图像中有哪些物体和位置 目标检测算法原理&#xff1a; 记住算法的识别流程、解决问题用到的关键技术 目标检测算法分类&#xff1a; 两阶段&#xff1a;先区域推荐ROI&#xff0c;再目标分类 region proposalCNN提取分类的目标检测框架 RC…

lua的笔记记录

类似python的eval和exec 可以伪装成其他格式的文件&#xff0c;比如.dll 希望在异常发生时&#xff0c;能够让其沉默&#xff0c;即异常捕获。而在 Lua 中实现异常捕获的话&#xff0c;需要使用函数 pcall&#xff0c;假设要执行一段 Lua 代码并捕获里面出现的所有错误&#xf…

智能进化论:AI必须跨越的四大认知鸿沟

1. 智能缺口&#xff1a;AI进化中的四大认知鸿沟 1.1 理解物理世界&#xff1a;从像素到因果的跨越 想象一个AI看着一杯倒下的水&#xff0c;它能描述“水滴形状”却无法预测“桌面会湿”。这正是当前AI的典型困境——缺乏对物理世界的因果理解。主流模型依赖海量图像或视频数…

传统足浴行业数字化转型:线上预约平台的技术架构与商业逻辑

上门按摩服务系统开发正成为行业新风口&#xff0c;这绝不是盲目跟风而是实实在在的市场趋势。随着现代人生活节奏加快&#xff0c;时间成本越来越高&#xff0c;传统到店消费模式已经无法满足消费者对便捷服务的需求。我们的团队深耕上门按摩系统开发领域五年&#xff0c;深刻…

从OCR到Document Parsing,AI时代的非结构化数据处理发生了什么改变?

智能文档处理&#xff1a;非结构化数据提出的挑战 在这个时代的每一天&#xff0c;无论是个人处理账单&#xff0c;还是企业处理合同、保险单、发票、报告或成堆的简历&#xff0c;我们都深陷在海量的非结构化数据之中。这类数据不像整齐排列的数据库表格那样规整&#xff0c;…

Inno Setup 安装向导各个页面详解

概览 表中描述了使用Inno Setup生成的安装包在安装过程中各个页面的字段和对应的说明信息。后文会对各个页面的参数做进一步解释说明。 字段说明wpWelcome欢迎页wpLicense许可协议wpPassword密码wpInfoBefore信息wpUserInfo用户信息wpSelectDir选择目标位置wpSelectComponent…

OPENCV重点结构体Mat的讲解

一、Opencv的作用 OpenCV是一个基于Apache2.0许可&#xff08;开源&#xff09;发行的跨平台计算机视觉和机器学习软件库&#xff0c;可以运行在Linux、Windows、Android和Mac OS操作系统上。 它轻量级而且高效——由一系列 C 函数和少量 C 类构成&#xff0c;同时提供了Pytho…

【趣味Html】第11课:动态闪烁发光粒子五角星

打造炫酷的动态闪烁发光粒子五角星效果 前言 在现代Web开发中&#xff0c;视觉效果的重要性不言而喻。今天我们将深入探讨如何使用HTML5 Canvas和JavaScript创建一个令人惊艳的动态闪烁发光粒子五角星效果。这个项目不仅展示了Canvas的强大功能&#xff0c;还涉及了粒子系统、…

CFTel:一种基于云雾自动化的鲁棒且可扩展的远程机器人架构

中文标题&#xff1a; CFTel&#xff1a;一种基于云雾自动化的鲁棒且可扩展的远程机器人架构 英文标题&#xff1a; CFTel: A Practical Architecture for Robust and Scalable Telerobotics with Cloud-Fog Automation 作者信息 Thien Tran, Jonathan Kua, Minh Tran, Hongh…

Educational Codeforces Round 179 (Rated for Div. 2)

CF2111,简单手速场 A. Energy Crystals 贪心&#xff0c;每次最小值会乘2&#xff0c;直接模拟即可&#xff0c;复杂度 O ( log ⁡ n ) O(\log n) O(logn) void solve(){int x;cin>>x;multiset<int> s{0,0,0};int res0;while(*s.begin()<x){int x*s.begin();s…

完成一个可交互的k8s管理平台的页面开发

使用deepseek完成设计一个k8s管理平台&#xff0c;关键词如下&#xff1a; 完成一个可交互的k8s管理平台的页面开发Kubernetes 管理平台页面设计 下面是一个基于现代Web技术的可交互Kubernetes管理平台的页面设计方案&#xff0c;使用React作为前端框架&#xff0c;配合Ant De…