Woshiluo’s Code Style

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$ 应当尽力只在循环中使用

推荐的命名法则

  • 不建议使用驼峰法
  1. 去除英文单词里的元音
  2. 取英文单词 3 / 5 个字母
  3. 如果单词比较短,那么直接使用原单词也是可以的
  4. 可以考虑采用 dis sum 一类的前缀修饰
  5. 不会英文单词的时候,可以使用汉语拼音替代,但仅允许在竞赛考场上出现

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

一段优秀代码,应当是你半年后再次阅读,五分钟后就能明白这段代码在干什么

本文可能对竞赛场上不是那么的友好,可是算法竞赛上,通常思考的时间越大于代码的时间,且更加优良的码风可以减少调试难度,减少出错概率,这是一个天平,需要我们自己在一次次考试中找到平衡点

而在一般的代码中,特别是工程代码,优良的码风不仅仅对自己好,也对项目及其维护人员友善

所以代码风格并不仅仅是一种美观的产物,而是一种有实际意义,有效率的事件

我们值得为代码风格消耗时间

发表评论

电子邮件地址不会被公开。 必填项已用*标注