C++命名规范

本文详细介绍了C++编程中头文件的处理,包括#define防止多重包含和标准化的头文件包含次序。此外,还阐述了命名约定,如类名、函数、变量的命名规则,强调了命名的清晰性和一致性,以及变量的作用域和类型前缀的使用。遵循这些规范能提升代码的可读性和维护性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、头文件

1)      #define保护

#define防止头文件被多重包含,例如:

#ifndef MAP_MAINWINDOW_H

#define MAP_MAINWINDOW_H

……

#endif //MAP_MAINWINDOW_H

2)      头文件包含次序

将包含次序标准化可增强可读性,次序如下:C库头文件、QT/C++库头文件、其他库的头文件、项目内的头文件。

2、命名约定

1)      通用命名约定

避免使用缩写,避免使用无意义的名称。

2)      类命名

类名是名词,每个单词以大写字母开头,不包含下划线,且名前加大写字母C,例如:

CMySystemWatcher

CClockBattery

3)    函数

函数的名称由一个或多个单词组成。例如:"GetName()", "SetValue()"

回调函数结尾+CallBack。 例如  NotifyCallBack()

事件函数结尾+Event。 例如 ModifyEvent()

信号、槽函数 :

signals:
    void askIndexSignal();
private slots:
    void setIndexSlot();

4)    变量

        变量应该是程序中使用最多的标识符了,变量的命名规范可能是一套C++命名准则中最重要的部分:

变量的命名变量名由作用域前缀+类型前缀+一个或多个单词组成。为便于界定,每个单词的首字母要大写。

对于某些用途简单明了的局部变量,也可以使用简化的方式,如:i, j, k, x, y, z .... 

作用域前缀作用域前缀标明一个变量的可见范围。作用域可以有如下几种:
前缀说明
局部变量
m_类的成员变量(member)
sm_类的静态成员变量(static member)
s_静态变量(static)
g_外部全局变量(global)
sg_静态全局变量(static global)
gg_进程间共享的共享数据段全局变量(global global)

除非不得已,否则应该尽可能少使用全局变量。

类型前缀类型前缀标明一个变量的类型,可以有如下几种:
前缀说明
n整型和位域变量(number)
e枚举型变量(enumeration)
c字符型变量(char)
b布尔型变量(bool)
f浮点型变量(float)
p指针型变量和迭代子(pointer)
pfn特别针对指向函数的指针变量和函数对象指针(pointer of function)
g数组(grid)
i类的实例(instance)

对于经常用到的类,也可以定义一些专门的前缀,如:std::string和std::wstring类的前缀可以定义为"st",std::vector类的前缀可以定义为"v"等等。

类型前缀可以组合使用,例如"gc"表示字符数组,"ppn"表示指向整型的指针的指针等等。 

推荐的组成形式变量的名字应当使用"名词"或者"形容词+名词"。例如:"nCode", "m_nState","nMaxWidth" ....

 

> 转载请注明出处,以上只代表个人观点,引用不当或侵权请联系删除。

### C++ 编程风格与命名约定的最佳实践 #### 变量命名规则C++ 社区中,常见的做法是使变量名具有描述性和可读性。通常采用驼峰命名法(camelCase),即第一个单词首字母小写,后续单词首字母大写[^1]。 ```cpp int studentCount; double averageScore; ``` #### 函数命名规则 对于函数名称,在 C++ 中同样推荐使用驼峰命名方式。由于函数的形式已经能够区分其与其他实体的不同之处,因此无需通过前缀或其他特殊字符来标记它们为函数。 ```cpp void calculateTotal(); bool isValidEntry(int entry); ``` #### 常量定义 当涉及到字符串类型的常量时,建议保持标识符中的词语顺序与实际值相匹配。这有助于提高代码的一致性和易理解度[^2]。 ```cpp const std::string SUCCESS_MESSAGE = "successMessage"; ``` #### 结构体和接口设计 针对来自面向对象背景的新手开发者而言,Go 语言提供了一种独特的结构体(structs) 和 接口(interfaces) 的概念组合,虽然这里讨论的是 C++, 类似的理念也适用于此:应当注重如何利用类(class)/struct 来模拟现实世界的事物以及定义清晰的行为契约(interface)[^3]。 ```cpp class Rectangle { public: double width; double height; // Constructor Rectangle(double w, double h): width(w), height(h){} // Method to get area double GetArea() const {return width * height;} }; ``` #### 访问修饰符 遵循访问控制原则,将成员变量设为私有(private),并通过公共(public) 方法暴露必要的操作给外部使用者。这样可以保护数据完整性并实现封装特性[^4]。 ```cpp private: int age; // Private member variable public: void setAge(int newAge); // Public setter method int getAge(); // Public getter method ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值