好奇的探索者,理性的思考者,踏实的行动者。
Table of Contents:
Currently, code should target C++17, i.e., should not use C++2x features.
基于 C++ 11,C++ 17 旨在使 C++ 成为一个不那么臃肿复杂的编程语言,以简化该语言的日常使用,使开发者可以更简单地编写和维护代码。
缩进 制表符大小=4 缩进大小=4
编码 no bom的UTF-8
#ifndef __FOO_CLASS_H__
#define __FOO_CLASS_H__
...
#endif//__FOO_CLASS_H__
建议低于10行函数才考虑inline
#include
顺序建议如下// #include <Hero> 尽量不要包含头文件,
class Hero; //下方前置声明
class Mon;
class Tri
{
Mon* m;
Hero* h;
}
其他的头文件规范:
- 避免多余的包含头文件
- 头文件应该是“自给自足的”
- 标准的头文件依赖的结构是树形的,若是存在环形图的结构,那就是自找麻烦了
头文件的影响
- 编译时间:对编译时间的影响可能是巨大的。
- 复杂性:不必要或笨拙的依赖关系会增加意外的复杂性。
- 重构/重组您的程序更加困难。
- 这使测试“模块”更难隔离。
- 文档:当您知道标头准确反映了文件中使用的内容时,此信息有助于理解代码。
鼓励在源文件中使用匿名的命令空间,除std外不要有任何的using namespace,但是可以在源文件和头文件的函数、方法或类的内部using其它的实体,如using std::vector;等等;
_foo
下划线开头, 如果是结构体的成员,则不加下划线//========================================================================
// 名称: xx
// 功能简介:xx
// 作者:xx
// 修改时间:2015.02.05
//========================================================================
//========================================================================
// Name: pathplan.cpp
// Author: sunxvming
// Description: Grid-based map representation and path planning using the A* algorithm
// Modified: October 19, 2023
//========================================================================
1.客户端使用 namespace xxx{} 命名空间包裹,xxx为本项目定义的命名空间
2.全局函数也封装于命名空间内
3.禁止使用using namespace xx; 建议使用using namespace LORD::FOO;类型
4.命名空间不要增加额外的缩进层次, 例如:
namespace {
void foo() { // 正确. 命名空间内没有额外的缩进.
...
}
} // namespace
5.声明嵌套命名空间时, 每个命名空间都独立成行.
namespace foo {
namespace bar {
1.仅仅有数据时使用struct,其他一律使用class
2.成员变量初始化顺序,声明顺序对应
3.头文件中一律不写任何方法实现的代码
static_cast<>
,建议不要使用int* y = (int*)x;
验证 B* b = (B*)c; B* b = static_cast<B*> c;
// 低效率 禁止使用
for (int i=0; i<1000; ++i)
{
Foo f;
f.DoSomething(i);
}
// 建议使用
Foo f;
for (int i=0; i<1000; ++i)
{
f.DoSomething(i);
}