C++代码规范

1、头文件

1.1、防止头文件重复包含
防止头文件重复包含的方法有两种:"#pragma once"和"#ifndef"
在此,只选择第二种,且命名方式为:__<PROJECT>_<PATH>_<FILE>_H__
1.2、前置声明
前置声明可以在QT源代码中大量看见
优点:
	可以减少编译时间, 多余的 #include 会迫使编译器展开更多的文件, 处理更多的输入;
	前置声明能够节省不必要的重新编译的时间。 #include 使代码因为头文件中无关的改动而被重新编译多次;
缺点:
	前置声明隐藏了依赖关系,头文件改动时,用户的代码会跳过必要的重新编译过程。
	前置声明可能会被库的后续更改所破坏。前置声明函数或模板有时会妨碍头文件开发者变动其 API. 例如扩大形参类型,加个自带默认参数的模板形参等等。
	前置声明来自命名空间 std:: 的 symbol 时,其行为未定义。
	极端情况下,用前置声明代替 #include 甚至都会暗暗地改变代码的含义。如下:
	// b.h:
	struct B {};
	struct D : B {};
	
	// good_user.cc:
	#include "b.h"
	void f(B*);
	void f(void*);
	void test(D* x) { f(x); }  // calls f(B*)
	如果 #include 被 B 和 D 的前置声明替代, test() 就会调用 f(void*) .

	前置声明了不少来自头文件的 symbol 时,就会比单单一行的 include 冗长。
	仅仅为了能前置声明而重构代码(比如用指针成员代替对象成员)会使代码变得更慢更复杂.
结论:
	函数:总是使用 #include.
	类模板:优先使用 #include.
1.3、#include 的路径及顺序
在正式项目中禁止包含如"."和".."这种特殊目录,且禁止头文件路径过长
如"google-awesome-project/src/base/logging.h"应简化为"#include "base/logging.h"
顺序:
	本cpp文件对应的头文件(没有则忽略)
	C 系统文件
	C++ 系统文件
	其他库的 .h 文件
	本项目内 .h 文件
	其他需要靠宏来判断是否包含的文件(如跨平台头文件)

这种优先的顺序排序保证当源文件遗漏某些必要的库时,编译会立即终止。
头文件按照稳定性排序,使得当本项目内头文件出现问题时也可以及时判断
注意:
	假设本源文件依赖base.h, 但foo.h已包含base.h文件,则此源文件也需同样包含base.h

未完待续

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
.NET C#代码规范是一组规则和标准,用于指导开发人员在编写C#代码时如何组织、命名和编写代码,以确保代码的可读性、可维护性和一致性。 在.NET C#代码规范中,一般会包含以下方面的内容: 1. 命名规则:指定了不同类型的命名规范,包括类、方法、变量、常量等的命名规则。例如,类名使用大驼峰命名法(PascalCase),变量和方法名使用小驼峰命名法(camelCase)。 2. 代码结构和布局:指定了代码中的缩进、换行和空白字符的使用规则,以提高代码的可读性。例如,使用适当的缩进和空行来组织代码块。 3. 注释规范:指定了如何编写注释,以提供清晰的解释和文档。例如,使用XML注释格式来描述方法、参数和返回值的含义。 4. 错误处理和异常规范:指定了如何处理错误和异常情况,以确保代码的健壮性和可维护性。例如,使用try-catch块来捕获和处理异常。 5. 代码复用和模块化规范:指定了如何重用代码和模块,以提高代码的可维护性和可扩展性。例如,使用类库和模块化的设计来封装可重用的功能。 6. 性能和优化规范:指定了如何编写高性能的代码,并提供了一些优化建议。例如,避免不必要的内存分配和循环嵌套,使用合适的数据结构和算法等。 7. 安全规范:指定了如何编写安全的代码,以防止潜在的安全漏洞。例如,避免直接拼接SQL语句,而应使用参数化查询来防止SQL注入攻击。 通过遵守.NET C#代码规范开发人员可以编写出一致、可读性强、易于维护和面向对象的代码,从而提高代码质量和开发效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值