• 欢迎访问少将全栈,学会感恩,乐于付出,珍惜缘份,成就彼此、推荐使用最新版火狐浏览器和Chrome浏览器访问本网站。
  • 吐槽,投稿,删稿,交个朋友,商务沟通v:ai_draw
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏少将全栈吧

怎样编写格式优美的代码

点滴 admin 9年前 (2015-03-29) 1420次浏览 已收录 0个评论 扫描二维码


很多初学者会被人一眼就看出来是初学者,为什么?原因很多。其中,代码格式是很重要的一项。不注重代码格式,不仅别人看起来不舒服,还会影响自己对
代码的阅读。虽然错误的格式不会产生编译错误,但却会让你更容易犯错,并且更难排查错误。所以,学会编写格式优美的代码,是初学者必须要学的一课。

优秀的代码格式并不是唯一的,有很多种风格。本文仅讲解常见的 C/C++ 语言编码规则,而其它规则相信大家在学习工作中会慢慢接触到。

再有就是,为了便于阅读代码,EasyX 网站的代码都是比较注意格式的。所以,如果打算投稿到 EasyX,看看本文也很有必要。

以下讲解编写代码时在格式上一些常见的注意事项。

1. 正确缩进

所谓缩进,是指在某一行代码的左端留出一部分空白。采用缩进的目的为了清楚的定义一个块的开始和结束,这样会使程序更加清晰易读。虽然目前主流的开发平台都具备智能缩进的功能,但是很多时候修改代码还是需要自己注意缩进问题。

下面的范例代码是求解 100 以内的质数,该范例中有多种缩进情况的例子:

#include <stdio.h>
#include <math.h>

void main()
{
    printf("2");
    int col = 1;

    for (int n = 3; n <= 100; n += 2)
    {
        for (int m = 3; m <= sqrt(n); m += 2)
            if (n % m == 0)
                break;

        if (m > sqrt(n))
            printf("%c%d", (col++ % 5) ? ’  ’ : ’
’, n);
    }

    printf("
");
}

除此以外,还有很多地方的范例代码有正确缩进,例如 MSDN、VC 自带的范例等。

可以看到,每行代码前的缩进清晰的表明了代码的结构,正确的缩进可以帮助开发者更清晰有效地阅读代码并发现逻辑错误。所以,掌握正确的缩进格式,是编写规范代码的第一课。

2. 学会用 tab 键缩进和对齐代码

当代码中需要缩进时,简单的按一下 tab 键就好。通常一个 tab 符占用 4 个空格的位置。每个 tab 符可以准确的将光标定位到下一个
tab 位,即 4 的整倍数的位置后面。例如,光标在行首时,按 tab 键,光标将会定位到第 4 个字符后面;光标在第 6 个字符后面时,按
tab 键,光标将会定位到第 8 个字符后面。

根据 tab 符的这个特性,除了用来缩进外,tab 键还可以用在很多地方,比如用来对齐代码。下面的范例片段用 tab 符将代码排列得很整齐:

  switch(item)
    {
        case EMPTY:          setfillcolor(BLACK);        break;
        case WALL:           setfillcolor(LIGHTGRAY);    break;
        case PLAYER_A:       setfillcolor(BLUE);         break;
        case PLAYER_B:       setfillcolor(RED);          break;
        case PLAYER_DEAD:    setfillcolor(MAGENTA);      break;
    }

3. 适当增加空行

虽然空行在 C/C++
语言中没有多大实际的目的,但是通过适当的插入空行能大大提高代码的可读性。一般情况下,在逻辑上相关联的代码块之间会插入一个或多个空行。例如,头文件
组、宏定义组、全局变量组之间、两个函数之间,还有函数之间以及函数内部的逻辑片断之间,都可以适当插入空行。插入空行的数量并没有严格规定,而是根据程
序的规模和代码风格来适度调整。比如,一个只有 30 行左右的代码,不同的函数间插入一个空行就可以;如果是 300 行左右的代码,可以在函数间插入
3 个空行。

第 1 点的范例代码比较简短,含有少量插入空行的范例。在 EasyX 官网有更多的范例,插入空行的情况也不尽相同。这些需要在学习编程的过程中慢慢体会。

4. 适当增加空格

除了使用空行外,通过使用空格来提高代码的可读性性也是程序员常用的手段。和空行一样,空格的使用也没有强制性的规定,仅仅是为了增强代码的可读性。一般情况下,以下位置可以适当插入空格:

(1) 等号的前后;

(2) 数学运算符的前后,关键字和括号之间插入空格;

(3) 比较运算符的前后;

(4) 后面有代码的分号后面;

(5) 分割不同参数的逗号后面;为了和上下行的代码对齐,有时候需要插入两个空格;如果需要插入更多空格才能和上下代码对齐,通常会使用 tab 键。

5. 适当增加注释

不写注释的编码习惯是不可取的。在较关键的语句、函数或代码片段周围以一定方式增加注释,会令代码简洁易懂,描述清晰的注释可以让阅读代码的人像阅读散文一样舒心。

注释的方式有很多种,以下列举常见的注释方式。

(1) 语句之前的注释,例如:

  // 初始化绘图窗口
    initgraph(640, 480);

(2) 语句右边的注释,例如:

  while(true)
    {
        int cmd = GetCmd();               // 获取用户命令
        if (!DealCmd(cmd))  break;    // 处理命令
        if (!DealGame())    break;    // 处理游戏
        Sleep(200);           // 延时
    }

(3) 语句内的注释,例如:

double springF = SPRINGK /* 弹力系数 */ * (len - SEGLEN);

(4) 代码首部的描述性注释,例如,easyx 官网的很多范例顶部都有这么一段:

///////////////////////////////////////////////////
// 程序名称:xxxxxxxx
// 编译环境:Visual C++ 6.0 / 2010,EasyX_2012立冬版
// 作  者:xxxx <[email protected]>
// 最后修改:2012-x-xx
//

(5) 函数首部的描述性注释 ,例如:

// 获取用户命令
int GetCmd()
{
    ......
}

(6) 变量后面的描述性注释(对齐注释会更漂亮),例如:

struct Mover
{
    COLORREF    color;          // 颜色
    float       x,  y;          // 坐标
    float       vX, vY;         // 速度
};

Phil Haack 曾经说过:“一旦一行代码被敲到文件中, 你就已经要开始维护那一行代码了。”所以,我们自己就是好(或者坏)注释的第一个受益者(或者受害者)。

6. 太长的代码要折行

当一行代码很长的时候(比如函数的参数比较多、判断语句的条件比较多),为了更清晰,可以把一行长代码分成多行书写,例如:

(1) 分行写多个判断语句。看以下代码:

if (ball.x > field.width || ball.x < 0 || ball.y > field.height || ball.y < 0)
{
    ......
}

可以分行写成这样(其实这个例子中的代码不算长,不分行也没事,这里只是举个例子):

if (ball.x > field.width || ball.x < 0      // 判断 x 坐标
    || ball.y > field.height || ball.y < 0)   // 判断 y 坐标
{
    ...
}

(2) 分行写多个参数。微软在 MSDN 中的很多例子都是这样做的,例如下面这段摘自 MSDN 的代码

  hwnd = CreateWindow(
        "MainWClass",        // name of window class 
        "Sample",            // title-bar string 
        WS_OVERLAPPEDWINDOW, // top-level window 
        CW_USEDEFAULT,       // default horizontal position 
        CW_USEDEFAULT,       // default vertical position 
        CW_USEDEFAULT,       // default width 
        CW_USEDEFAULT,       // default height 
        (HWND) NULL,         // no owner window 
        (HMENU) NULL,        // use class menu 
        hinstance,           // handle to application instance 
        (LPVOID) NULL);      // no window-creation data 

7. 适当调整代码的表达方式

一些语句功能是相似的,适当将一些语句换一个表达方式,可以令代码更清晰。看以下代码:

ball.x = 320;
ball.y = 240;
if (new)
    ball.color = BLACK;
else
    ball.color = NEW;
ball.dx = rand() % 6 - 3;
ball.dy = rand() % 6 - 3;

前面这段代码没有错,但是如果修改为下面这样,会更清晰:

ball.x = 320;
ball.y = 240;
ball.color = new ? BLACK : NEW;
ball.dx = rand() % 6 - 3;
ball.dy = rand() % 6 - 3;

8. 习惯很重要

代码的格式不是要最后修改,而是要在书写代码的时候就写正确。包括注释,都要在写代码的同时就写注释,甚至还可以先写注释然后补充代码。但是,一定不要在写完代码后再补充注释。

结束

编码习惯是一种感觉,只有经常写代码、经常和伙伴们分享代码,才能熟练掌握,运用自如。

非常感谢easyx的开发者,yw大哥一对一给我辅导,那个时候是2011年的时候、转眼4年过去了。

怎样编写格式优美的代码

转载自http://www.easyx.cn/skills/View.aspx?id=117

喜欢 (0)
[🍬谢谢你请我吃糖果🍬🍬~]
分享 (0)
关于作者:
少将,关注Web全栈开发、项目管理,持续不断的学习、努力成为一个更棒的开发,做最好的自己,让世界因你不同。
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址