楼主: 焚琴煮鹤.
180 0

[作业] C++代码规范实施指南 [推广有奖]

  • 0关注
  • 0粉丝

小学生

14%

还不是VIP/贵宾

-

威望
0
论坛币
10 个
通用积分
0.0159
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
40 点
帖子
3
精华
0
在线时间
0 小时
注册时间
2018-12-18
最后登录
2018-12-18

楼主
焚琴煮鹤. 发表于 2025-11-21 17:18:21 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

(二)命名规范就像给孩子起名字一样讲究

变量命名绝不能图省事,杜绝使用 a、b、c 这类毫无意义的符号。我们团队严格执行以下命名规则:类名采用大驼峰格式(如 DataManager),函数名使用小驼峰格式(如 parseConfigFile),宏定义则必须全大写并用下划线分隔(如 MAX_BUFFER_SIZE)。

成员变量统一以 m_ 开头(如 m_isValid),静态变量加 s_ 前缀(如 s_instance)。至于全局变量,尽量避免使用;若确实需要,务必加上 g_ 前缀(如 g_logLevel)以示区分。

布尔类型的变量命名必须体现其语义,应以 is、has 或 can 开头,例如 isReady、hasPermission。禁止使用 flag1、flag2 这种让人摸不着头脑的名称。

(三)缩进与空格的规范细节

项目组已统一采用 4 个空格进行缩进,严禁使用 Tab 字符。在 Visual Studio 中可通过【工具→选项→文本编辑器→C++→制表符】设置为“插入空格”来实现。

运算符前后必须保留空格,例如:int sum = a + b;,但指针声明时星号紧邻类型,如 char* buffer

函数参数列表中,逗号后需添加一个空格,如 connect(string ip, int port)

条件或循环语句中的关键字 if、for 后面必须跟一个空格,正确写法为:for (int i = 0; i < count; ++i)

(四)头文件保护机制不可忽略

每个头文件都必须包含防护措施,推荐使用 #pragma once,相比传统的 #ifndef/#define/#endif 更简洁且不易出错。

[此处为图片1]

(五)函数设计的基本原则

单个函数的代码行数不得超过 50 行,超过 30 行就应考虑是否需要拆分为多个小函数。函数参数数量建议控制在 5 个以内,若过多则应封装成结构体传递。

参数排列顺序遵循输入在前、输出在后的原则。输入参数尽可能使用 const 引用方式传递,例如:void updateUser(const UserInfo& user)

返回值优先使用智能指针而非原始指针,并对可修饰为 const 的内容明确标注,提升安全性和可读性。

(六)专业级注释的书写方式

头文件中的注释推荐采用三线格式,清晰标明功能、作者和日期等信息。

函数注释必须详细说明各个参数的意义及返回值含义,示例如下:

/**
 * 解析配置文件
 * @param filename 配置文件路径(输入)
 * @return 成功返回 true,失败返回 false
 */
bool parseConfigFile(const string& filename);
    

行内注释统一使用 // 形式,禁止嵌套使用 /* */ 注释块。关键逻辑流程必须配有注释,但像 int i = 0; 这类显而易见的操作无需额外解释。

(七)内存管理的硬性要求

禁止直接调用 new 和 delete,所有动态内存管理必须通过智能指针完成。对象创建优先使用 make_shared 或 make_unique 辅助函数。

当容器存储的是对象指针时,应使用嵌套的 shared_ptr 结构,例如:shared_ptr<vector<shared_ptr<Student>>>

循环体内不得频繁申请大块内存,任何超过 1KB 的缓冲区应在循环外部预先分配。

涉及文件操作或网络连接的资源,必须通过 RAII 机制进行封装,确保即使发生异常也能正确释放资源。

(八)异常处理的标准做法

构造函数若初始化失败,必须抛出异常,不允许依赖后续的 Init() 方法进行二次初始化。

捕获异常时要按具体到抽象的顺序处理,先 catch 派生类异常,再 catch 基类异常,防止异常被错误地屏蔽。

(九)紧跟现代 C++ 发展步伐

在类型明显可推导的情况下,优先使用 auto 简化声明,但容器迭代器等关键位置仍建议显式写出类型以增强可读性。

遍历容器时首选范围 for 循环,例如:for (const auto& item : itemList)

返回局部对象时可放心依赖移动语义,现代编译器会自动优化返回过程。

Lambda 表达式的使用要适度,避免过度嵌套导致代码难以维护。

(十)最后的一些提醒

编码规范的目的不是限制个人发挥,而是为了提高团队协作效率和代码一致性。建议在持续集成(CI)流程中集成 clang-tidy 工具进行静态检查,并在每次提交前运行 cppcheck 扫描潜在问题。

请始终记住:优秀的代码首先是写给人看的,其次才是让机器执行。下个月我们将组织一次全员代码评审活动,届时未遵守规范的同学将请全组喝奶茶!

[此处为图片1]
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:permission filename instance Manager Mission

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
jg-xs1
拉您进交流群
GMT+8, 2025-12-5 21:37