说说我的代码格式习惯之C/C++篇
来源:互联网 发布:完美解码 知乎 编辑:程序博客网 时间:2024/05/17 00:54
代码格式习惯是写程序中一个非常重要的问题。除非你是一个人单干,否则如果你没有良好的代码格式规范,别人读你的代码将会很头大。
个人认为自己的代码格式习惯还不错,有一个良好的习惯,别人看着也不至于太累。
先说第一个:
- #include <iostream>
在include之后空一格。
接下去是两种大括号习惯:
- int main() {
- }
- int main()
- {
- }
第一种风格有点趋向于java,不过这只是我个人理解。但是在用于struct的时候,我的大括号是第一种情况,但是小括号之后有一个空格。
而第二种就没什么说的,C/C++中的大括号我都是用这种的,除了上面说的struct。
然后是运算符。
- for(int i = 0; i < 5; i++)
- {
- }
- //================
- a = 1 + 2 + b * 5 + (7 + 2);
不管在哪里,在运算符的两边都要空一格,当然自加自减之类的不算在内。而在分隔符(如逗号和封号)之后空一格,之前不空格。分隔符的这种风格是英文风格,在英语中,标点符号前不空格,后面空格。不信的同学们可以在word中试试。如果前后都不空,那么word会划出下划线说有语法错误,如果在后面空了就没有语法错误了。
然后是数组大括号:
- int a[4] = { 1, 2, 3, 4 };
- int b[2][2] = { { 1, 2 }, { 3, 4 } };
大括号里面前后各空一格。
接着是TAB键,在C/C++中,缩进是很重要的。不过我通常在IDE或者编辑器中使用空格替换TAB。因为在不同的环境中TAB的大小是不一样的,通常我都是用四个空格代替。
- for(int i = 0; i < 5; i++)
- {
- cin >> a[i];
- }
下面提供一段我的风格的DFS迷宫:
- #include <iostream>
- #include <cstring>
- #include <list>
- using namespace std;
- struct coor {
- int x, y;
- bool operator == (coor a)
- {
- if(a.x == x && a.y == y) return true;
- else return false;
- }
- coor operator += (coor a)
- {
- x += a.x, y += a.y;
- return *this;
- }
- coor operator -= (coor a)
- {
- x -= a.x, y -= a.y;
- return *this;
- }
- bool pend(int n, int m)
- {
- if(x >= 0 && y >= 0 && x < m && y < n) return true;
- else return false;
- }
- };
- int n, m;
- int mat[20][20];
- bool vis[20][20], ok = false;
- coor op, ed;
- list<coor> l;
- const coor dir[4] = { {0, 1}, {1, 0}, {0, -1}, {-1, 0} };
- int all;
- void init()
- {
- cout << "Input Row and Col: ";
- cin >> n >> m;
- cout << "Input the matrix:" << endl;
- for(int i = 0; i < n; i++)
- for(int j = 0; j < m; j++) cin >> mat[i][j];
- cout << "Input the entrance coor: ";
- cin >> op.x >> op.y;
- cout << "Input the exit coor: ";
- cin >> ed.x >> ed.y;
- cout << "Input if you wanna see all the solutions(0 / 1): ";
- cin >> all;
- l.push_back(op);
- memset(vis, 0, sizeof(vis));
- }
- void success()
- {
- cout << endl;
- cout << "There'are total " << l.size() << " steps: " << endl;
- for(list<coor>::iterator i = l.begin(); i != l.end(); i++)
- cout << " --> (" << i->x << ", " << i->y << ") <--" << endl;
- }
- void dfs(coor now, coor ed)
- {
- if(now == ed)
- {
- if(!all) ok = true;
- success();
- }
- vis[now.y][now.x] = true;
- for(int i = 0; i < 4; i++)
- {
- now += dir[i];
- if(now.pend(n, m))
- {
- if(!mat[now.y][now.x] && !vis[now.y][now.x])
- {
- l.push_back(now);
- dfs(now, ed);
- l.pop_back();
- }
- if(ok) return;
- }
- now -= dir[i];
- }
- if(all) vis[now.y][now.x] = false;
- }
- int main()
- {
- init();
- dfs(op, ed);
- return 0;
- }
还有就是注释。我的注释习惯是从Doxygen中学的。主要讲几种:
- /** 这是在一个语句上方的注释 */
- ///< 这是一个在语句后方的注释
- /**
- * @brief 函数名
- * 这是一个函数的注释
- *
- * @param 参数名 参数解释
- * @param 参数名... 参数解释...
- * @return 返回说明
- */
上面的只是一部分的注释,因为我都养成习惯了,所以一下子想不起自己的一些风格了 = = 不好意思哈。
不难看出,我本身就是习惯性地遵循着这样一个规则。
不敢说我的风格习惯非常好,但我也自认为算是良好吧。上面的一些看法仅仅是抛砖引玉,欢迎有相同“洁癖”的童鞋们在下面拍砖。
- 说说我的代码格式习惯之C/C++篇
- 【C++】代码思考习惯
- 说说我与C语言...
- 说说我看过的那些C语言书
- 我的c语言复习笔记1-说说for循环
- 我的C语言笔记之经典代码(一)
- c#:我不知道的格式转换
- 说说 Objective-C 里的 @()
- 说说 Objective-C 里的 @()
- 说说 Objective-C 里的 @()
- 值得注意的C代码编写习惯与风格
- 我的c之路
- 我的代码格式
- c语言之良好的编程习惯(一)
- c语言之良好的编程习惯(二)
- c语言之良好的编程习惯(三)
- c语言之良好的编程习惯(四)
- 一些好的习惯 c
- 学java
- 学—习—解—惑—贴
- 好的软件人员一生必看的六十本书
- 优秀程序员应具备的素质
- 计算机网络原理知识点
- 说说我的代码格式习惯之C/C++篇
- 我来啦~~
- IspostBack
- 要认真要努力
- 硬盘物理坏道处理方法
- 输出语句
- yitian!!
- Hibernate
- omg