Code Style

预编译指令:

顺序:

  • $ pragma $

  • $ include $

  • $ define $

  • $ undef $

缩进:

$ define $ $undef $ 继承上层缩进,其余不缩进。

如果有多层嵌套 $#if $ $ #endif $ $#endif $后应有对应的注释标识出与其对应的 $#if $。

尽量不要适用 $#define $而使用 $const $, $typedef $, $inline $。

所有预编译命令不应缩进。

写法:

  • $ include $ 中能使用 $ < > $ 的尽量不要使用 $ " " $ ;

  • $ include $ 中不使用空格。

  • $ define undef $ 中允许被定义的宏为全部大写或全部小写,其余情况不允许使用大写。

命名空间:

写法:

总是使用 $ using namespace std $ 或 导入

  • $ using $ $ std::cin $
  • $ using $ $ std::cout $
  • $ using $ $ std::endl $
  • $ using $ $ std::min $
  • $ using $ $ std::max $

等在代码出现过的 $ std namespace $ 中的函数。

命名空间中可以使用 $ #define $ ,但必须
在结尾处 $ #undef $ ,且 $ #define $ 指令应置于命名空间的开头处。

任何大型数据结构使用其大写简写为名称的单独 $ namespace $ , 如
$ namespacequad KDTquad namespacequad SGTquad namespacequad TRP, $ 并总是在命名空间的结尾处 (}) 后缀一分号 $ ';' $ ,例如:

namespace SGT
{
    #define LCH tree[inx].ch[0]
    #define RCH tree[inx].ch[1]
    
    void func1()
    {
        // .....
    }
    
    #undef LCH
    #undef RCH
};

顺序:

应置于代码开头处的所有预编译指令之后。

缩进:

继承上层缩进。

花括号:

写法:

使用花括号时有两种规则:

  1. 使用 (Allman) 式花括号,也即花括号换行。 例如:
void Func1()
{
    for (;;)
    {
        // ...
    }
    if (case)
    {
        // ....
    }
    else
    {
        if (case 2)
        {
            // ..
        }
        else { Func2(); return; }
    }
}
  1. 或者花括号的左右边都在同一行,右括号与左花括号之间有一空格,例如:
for (;;) {Func1();Func2();}

注意:

即使内部只有一条语句的 $ if $ 与 $ for $ 等也必须用大括号括起来。

行:

写法:

每行可以有多个(两个及以上)语句。但任何时候,每行不应太长。

多个意义独立的代码块之间应用一个空行隔开 ;

非空行尾不应有多余的空格 ;

$ usingquad namespacequad std; $ 后有一空行 ;

函数、成员函数、结构体、全局变量块之间必须用空行隔开。

缩进:

继承上层缩进 。

指针与引用:

写法:

(OI) 代码中不使用指针。

任何引用前的标识符 $ '&' $ 和引用变量类型标识符之间用一个空格隔开,如

void Func1(int &q, int &t)
{
    int a, b;
    int &aref = a, &bref = b;
}

缩进:

继承上层缩进 。

函数与变量:

写法:

函数:

函数采用大驼峰命名法,选择性地加入下划线 $ '_' $ ,采用对应算法缩写,如 $ KMP, CRT, NTT,CDQ; $ 如:

void Update()
{
	···
}

int Qry()
{
	···
}

Mat Gauss_Elimination()
{
	···
}

空函数体必须为以下格式:

void Func1() {}

变量:

变量可以以一个小写字母命名;

全局数组名可使用1个大写字母+0~2个数字命名,如A, T1,F01;

简短的inline函数,如min, upd(用作数据结构中的update操作);

常量可以大写字母命名,如N, M;

临时变量可以以下划线开头。

缩进:

继承上层缩进 。

空格:

写法:

  • 逗号前后都不能有空格。

  • 冒号的两侧必须有一空格。

  • $ '++' $ $ '--' $ 前/后不需空格。

  • 形如 $ vector< pair<int, int> > $ 的声明,每对 $ <> $ 前后空格需要对称。

  • $ '::' '.' $ 的两侧不应有空格。

  • 初始化列表前后不需空格,如 $ max({a, b, c}); $ 。

缩进:

继承上层缩进 。

注释:

缩进:

继承上层缩进。

写法:

  • 单行注释使用 (//) ,之后应有一空格,如 $// do $ $something $ 。

  • 多行注释使用 $/* $ (*/) ,其中 (/*)(*/) 应独占一行,且 (/*) 前和 (*/) 后应有一空行,例如:

int func1()
{
    int a=1,b=2;
    
    /*
    return 3;
    */
    
    return a+b;//a+b=3 
}
原文地址:https://www.cnblogs.com/oierwyh/p/11342067.html