zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    HTML + CSS短标题(二,三,四文字长度)两端对齐的方式
    转载 ----MAC 上搭建lua
    转载 -- 基于原生JS与OC方法互相调用并传值(附HTML代码)
    转载 ---资深HR告诉你:我如何筛选简历与选择人员的
    转载 OSX开发推荐书籍列表
    IOS --支付宝SDK 分解讲解
    IOS -RSA加密及解密
    ios --转载 使用SMSSDK实现短信验证:
    ios --转载 在mac上安装让rvm及cocoa pods详解
    简单说明Python中的装饰器的用法
  • 原文地址:https://www.cnblogs.com/szdytom/p/code-style.html
Copyright © 2011-2022 走看看