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

头文件

必须使用using namespace std;

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

#include <cstdio>

而不是

#include <stdio.h>

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

预处理

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

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

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

代码

缩进

对于每个代码块,使用与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\n");
else printf("IMPOSSIBLE\n"); // 错误
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 表示逻辑值。

szTom's Code Style的更多相关文章

  1. 与你相遇好幸运,The Moe Node.js Code Style Guide

    The Moe Node.js Code Style Guide  By 一个最萌的开发者 @2016.9.21 >>代码是人来阅读的,格式规范的代码是对编程人员最好的礼物 :) > ...

  2. Eclipse setting Java code style and codetemplate

    1.open the eclipse tool window First click the Window menu,then check the children's menu which name ...

  3. Java Code Style

    近期困惑于团队成员代码风格迥异,代码质量不可控,作为一名老司机,忧患于后期服务的可维护性,多次一对一的代码Review,耗时耗力不说,效果也不明显.痛定思痛,多次反思之后得出结论:无规矩不成方圆,可靠 ...

  4. 【Idea】idea code style配置eclipse code formatter

    在eclipse中有自动配置code style的功能 ,但是idea上却没有,这个时候需要自己手工配置 1. 在idea中找到Preference->Plugins->Browse re ...

  5. checkstyle.xml Code Style for Eclipse

    1. Code Templates [下载 Code Templates] 打开 Eclipse -> Window -> Preferences -> Java -> Cod ...

  6. _rqy's Code Style for OI

    _rqy's Code Style for OI Inspired by Menci's Code Style for OI 本文介绍_rqy的OI中的代码规范.其来源主要为_rqy的长期积累及参考G ...

  7. Javascript Code Style Guide

    本指南采用的Airbnb发布的基于ES5的JavaScript Code Style. ES5 英文版:https://github.com/airbnb/javascript/tree/es5-de ...

  8. 在IntelliJ IDEA中配置Google Java Code Style及代码格式化快捷键

    google-java-format plugin should intercept the “Reformat Code” action in IDEA (Ctrl+Alt+L) and apply ...

  9. intelij IDEA设置goole code style风格

    1.安装google-java-format 插件      file ->Setings... ->pligins     输入上诉插件安装 2.下载IntelliJ Java Goog ...

随机推荐

  1. 原 在windows上创建文件名以“.”开头的文件

    在实际项目开发中,我们会经常遇到以”.”开头的配置文件.例如我们如果需要通过配置文件给npm更换源就需要更改.npmrc文件,然而还有很多友友还不清楚如何创建一个类似的文件,今天就和大家分享下这个小技 ...

  2. 用jsonp 解决跨域问题

    想自己用 js写一个原生的ajax请求,访问本地文件,json/txt.但是demo,写了一个后,发现 原来是跨域了. js 写的原生ajax 请求代码如下 html代码 将获取的txt 文件 展示出 ...

  3. Junit测试代码时出现initializationError 错误

    首先代码没有错误,执行Junit测试时出现以上错误.上网查资料发现少了包 从网上下载了一个jar包解决了hamcrest-core-1.3.jar 现在下载包搜索的好多坑,有的网站必须注册才能下载,而 ...

  4. linux一个例子驱动

    我们介绍的驱动称为 short (Simple Hardware Operations and Raw Tests). 所有它做 的是读和写几个 8-位 端口, 从你在加载时选择的开始. 缺省地, 它 ...

  5. Linux 内核 回顾: ISA

    设计上 ISA 总线非常老了, 并且是非常地低能, 但是它仍然持有一块挺大的控制设备的 市场. 如果速度不重要并且你想支持老式主板, 一个 ISA 实现要优于 PCI. 这个老标准 的另外一个好处是如 ...

  6. 查看当前android设备已安装的第三方包

    查看当前android设备已安装的第三方包 adb shell pm list package -3 2        adb shell "getprop ro.build.version ...

  7. 【Jenkins】pipeline-hello-world项目

    1.New Item 2.Pipeline Definition 3.Build Error 4.Solution 5.Console Output

  8. Team Foundation Server 2015使用教程【2】:默认团队成员添加

    官方文档:https://www.visualstudio.com/en-us/docs/setup-admin/add-users

  9. 如何使用IoTSharp对接ModBus?

    提到对接ModBus 那么或许大家最熟悉的可能是 HslCommunication 和SharpSCADA 了,是GitHub 上关注最多的此类开源项目,  因此IoTSharp将通过HSL组件进行数 ...

  10. 仿快播APP源码

    目录 仿快播系统 一.项目总结三步走 二.项目需求分析 三.搭建框架 四.ORM框架分析 五.功能分析 六.项目开发--仿快播视频 服务端client start.py ---- 启动文件 conf ...