• szTom's Code Style


    介绍szTom在C++中使用的代码风格

    头文件

    必须使用using namespace std;

    如果是C头文件,必须使用c前缀文件名。

    // 正确
    #include <cstdio>
    // 错误
    #include <stdio.h>
    

    所有#include必须放置于程序开头

    预处理

    所有的预编译指令(包括 #ifdef 等)不能缩进。

    代码不能出现魔鬼数字,必须使用#define

    #define声明的宏函数,减少空格的使用。

    #endif必须注释其对应的#if

    #ifdef ABC
    // some code
    #endif // ABC
    

    代码

    缩进

    对于每个代码块,使用与4个空格等长的 Tab 缩进。

    花括号

    花括号必须不换行,左花括号的左边必须有且仅有一个空格。

    如:

    if (condition) {
    
    } else {
    
    }
    

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

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

    if (condition) {
        // some code
    }
    
    for (int i = 1; i <= n; ++i) {
        // some code
    }
    

    using namespace std;必须紧跟在 #include 后的空行后,之后必须一个空行。

    不应该有两个连续的空行。

    for 中的三个语句外,每行不能有超过一个由;隔开的语句。

    代码块

    由流程控制语句引导的代码块可以省略花括号,但是不能嵌套。

    // 正确
    if (ok) printf("POSSIBLE
    ");
    else printf("IMPOSSIBLE
    ");
    
    // 错误
    for (int i = 1; i <= n; ++i) 
        for (int j = 1; j <= n; ++j) 
            scanf("%d", a[i] + j);
    

    不能使用逗号表达式。

    函数

    main 函数的返回值类型必须int不可以省略 return 0;

    空函数体可以使用 {}

    可以使用lamada表达式。

    main 函数必须放置于整个程序末尾。

    函数声明修饰符(如inlinetemplate<typename T>)后,必须有一个空格,包括行末。

    inline template<typename T> 
    T abs(T x) {
        return x >= 0 ? : -x;
    }
    

    变量

    除用于字符串的char数组外,所有长度大于(5)的数组必须使用全局变量。

    空格

    逗号 ,for 中的分号 ; 后面必须有一个空格,前面不能有空格。

    ()[]前后不能有空格。

    双目运算符、三目运算符的两侧必须有一个空格。

    函数修饰冒号的右侧必须有一个空格,左侧不能有空格, 其他冒号两侧都必须有一个空格。

    struct Edge {
        int x;
        Edge(): x(0) {}
    }
    
    x >= 0 ? x : -x;
    

    流程控制关键字之后,函数名之后,左圆括号前必须有一个空格。

    .->:: 的两边不能有空格。

    在算术运算符,位运算付前后必须有一个空格。

    在预处理记号后必须有一个空格。

    在模板类的实例化时,出现嵌套的,>之间必须有一个空格。

    vector<vector<int> > v;
    

    指针与引用

    在描述类型名时,指针符号 * 和引用符号 & 与左侧的类型名之间必须有一个空格,与右侧的其它关键字之间不能有空格。

    在定义变量、函数返回值、参数时,指针符号 * 和引用符号 & 与左侧的类型名之间必须有一个空格,与右侧的变量、函数、参数名之间不能有空格。

    不能取数组某一项的地址,应该计算指针。

    // 错误
    scanf("%d", &a[i]);
    // 正确
    scanf("%d", a + i);
    

    杂项

    可以使用三目运算符,但不能嵌套。

    可以使用switch-case语句,但不能嵌套。

    不能使用typedef将自带类型重定义以缩短代码长度。

    // 错误写法
    typedef long long LL;
    

    在不影响代码逻辑的前提下,使用将自增,自减的运算符放在前面。

    ++a;
    

    不能使用 int 代替 bool 表示逻辑值。

    不能使用 01 代替逻辑值 truefalse

  • 相关阅读:
    前端开发 —— 快速入门:JavaScript & CSS 脚手架
    MySQL全方位练习(学生表 教师表 课程表 分数表)
    php判断是爬虫在访问还是用户浏览器在访问
    Eclipse 安装Activiti插件
    随机生成一串字符串(java)
    js文字转语音(speechSynthesis)
    语音识别(Web Speech API)
    js判断是否为手机端访问
    tomcat部署安全证书文件(阿里云SSL证书)
    springboot文字转语音(jacob)
  • 原文地址:https://www.cnblogs.com/szdytom/p/code-style.html
Copyright © 2020-2023  润新知