Code Style
代码风格,这是基本上每个写代码的人都会遇到的问题,怎么写?不同的代码风格总会被冠上不同的优缺点
一次次的适应与修改,最终每个人会形成自己的码风
我决定在此写出自己的码风,以此记录
Thanks
在我的码风形成过程中,以下 文章 / 文档 对作者本人造成了一定影响
在未特殊说明的情况下,本方法同时适用与 C/C++
HTML
CSS
PHP
Node.JS
1 缩进
使用 Tab
进行缩进,特殊情况允许使用 软 Tab(即空格),否则推荐制表符
推荐缩进宽度为 4
2 括号
若出现 小括号 / 中括号 / 尖括号 中间有套超过一层运算的,则应当在两边添加空格(HTML
除外)
大括号不换行
对于函数类调用,小括号后面的大括号应接一格
在大括号出现后一般立即换行,除非内部语句少于等于 1
大括号如果换行,内部必须有缩进
我们在这里视 HTML
标签为大括号
我们视 <?php ?>
标签为一组大括号
在 PHP 中,本文视引号作为一种运算
括号本身也可视作运算
Example:
inline int Min( int a, int b ) { return a < b? a: b; }
int f(int x) {
if( x == 1 || x == 2 )
return 1;
return f( x - 1 ) + f( x + 2 );
}
<p>Woshiluo's Code Style</p>
<div class="main">
<h1>Woshiluo's Code Style</h1>
</div>
3 运算符号
普通运算符应当在左右两层添加括号
问号表达式整体左右添加空格,中间的?
:
运算符仅在右边添加空格
逗号只在其后面添加空格
Example:
int f(int x) {
return a[ ( (x + 2 - 3) / 10 + 100 ) % mod ];
}
int gcd(int a, int b) { return b? gcd( b, a % b ): a; }
4 行长
每一行长度不应超过 70 – 80 字节,超过应当换行,对于函数换行,回车后添加一格缩进
int get_status( int id, int auth_id, int time, int last_time,
int add_time )
5 变量 / 函数 命名
两个原则
- 简洁易懂
- 不容易变量名重复
避免使用题目出现之外的单字母名称,注意,对于 $f(x),g(x)$ 一类名称也是允许使用单字母名称的,但应当尽力避免
注意 $i,j,k$ 应当尽力只在循环中使用
推荐的命名法则
- 不建议使用驼峰法
- 去除英文单词里的元音
- 取英文单词前 3 / 5 个字母
- 如果单词比较短,那么直接使用原单词也是可以的
- 可以考虑采用
dis
sum
一类的前缀修饰 - 不会英文单词的时候,可以使用汉语拼音替代,但仅允许在竞赛考场上出现
6 关于什么时候加大括号
在写程序的时候,不应当省略任何括号,写完时可以删除只有一行的 if
的括号,循环的括号依旧不允许
删除大括号后,缩进不减少
Example:
if(flag)
ans *= 2;
for(int i = 1; i <= n; i++) {
ans += sum[i];
}
6 特别语法
6.1 C++ inline / register 关键字
inline
关键字仅可以在小于 10 行 ,不包含递归及循环的函数中使用,可以不使用
拒绝使用 register
6.2 引用头文件
若无顺序要求,应当以长度为第一关键字,字典序为第二关键字,引用头文件
对于 C/C++ 先引用 C ,然后 C++,最后是其他的
#include <cstdio>
#include <cstring>
#include <vector>
#include <algorithm>
#include "tree.h"
6.3 PHP Array 函数
建议 Array 函数使用如下换行方案
<?php
$a = array(
"a" => a;
)
?>
6.4 JavaScript 函数传递
$(document).ready(function(){
$("p").click(function(){
$(this).hide();
});
});
7 End
一段优秀代码,应当是你半年后再次阅读,五分钟后就能明白这段代码在干什么
本文可能对竞赛场上不是那么的友好,可是算法竞赛上,通常思考的时间越大于代码的时间,且更加优良的码风可以减少调试难度,减少出错概率,这是一个天平,需要我们自己在一次次考试中找到平衡点
而在一般的代码中,特别是工程代码,优良的码风不仅仅对自己好,也对项目及其维护人员友善
所以代码风格并不仅仅是一种美观的产物,而是一种有实际意义,有效率的事件
我们值得为代码风格消耗时间