介绍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. [全+转载] solaris 网络配置

    ===================== 较为重要的几个文件: /etc/nodename                      主机名(即 hostname命令的输出) /etc/defaul ...

  2. java StringBuffer 与 StringBuilder

    String是不可变类,一旦String对象被创建,包含在对象中的字符序列是不可变的,直到对象被销毁: StringBuffer 与 StringBuilder对象则是可变的! 举例说明这两个的好处: ...

  3. Springboot-webscoket with sockjs

    新建springboot maven工程,引入以下包 <dependency> <groupId>org.springframework.boot</groupId> ...

  4. Xshell + SVN使用

    切换目录 cd+想跳转到的目录下 文件浏览 ls ll (ll 信息全) svn更新 svn up 编辑 vi vi的命令 文件保存与退出: :q 在文件未作任何修改的情况下退出. :q! 强制退出, ...

  5. 浅谈LOG日志的写法

    文章来源于公司的大牛 1 Log的用途 不管是使用何种编程语言,日志输出几乎无处不再.总结起来,日志大致有以下几种用途: l  问题追踪:通过日志不仅仅包括我们程序的一些bug,也可以在安装配置时,通 ...

  6. 2018-8-10-win10-uwp-按下等待按钮

    title author date CreateTime categories win10 uwp 按下等待按钮 lindexi 2018-08-10 19:16:50 +0800 2018-2-13 ...

  7. iptables总结,开启端口,查看端口占用情况

    Centos查看端口占用情况和开启端口命令 Centos查看端口占用情况命令,比如查看80端口占用情况使用如下命令: lsof -i tcp:80 列出所有端口 netstat -ntlp mac上查 ...

  8. 牛客多校第一场 B Inergratiion

    牛客多校第一场 B Inergratiion 传送门:https://ac.nowcoder.com/acm/contest/881/B 题意: 给你一个 [求值为多少 题解: 根据线代的知识 我们可 ...

  9. [Linux] 利用tcpdump和strace进行debug

    比如说要查看所有的sql查询语句,数据库的端口是3306 tcpdump -i any port 3306 -l -s 0 -w -|strings|grep -A 5 select 要查看所有的调用 ...

  10. java_学生成绩管理系统

    //信1805-2 20183670 王云鹏 package student; import java.util.Scanner; public class ScoreManagement { sta ...