1.5、命名、代码风格

By | 2014年11月29日

或许你会问:为什么要把命名和代码风格放在这么前面讲?我们现在连一行代码都写不出来呢!!!

因为我认为有着良好的命名规范和代码风格实在是太重要了。而这些东西在国内某些书上只字未提。以至于某些新手写出来的东西简直惨不忍睹!

所以本教程将他放到前面来讲,就是希望大家从一开始就养成一个良好的编程习惯。如果你觉得现在先学习怎么写代码,学好了后再来考虑怎么写出优秀的代码。这就大错特错了。这玩意就像你学写字一样,一旦养成了坏习惯,想改正就要花大量的精力,实在是得不偿失。

缩进

所谓缩进,是在每一行的代码左端空出一部分长度,使得更加清晰地从外观上看出程序的逻辑结构。请比较下面两个程序

#include <stdio.h>

int main()
{
    int test;
    if(1)
    {
        if(1)
        {
             test=1;
        }
    }
    return 0;
}
#include <stdio.h>
int main()
{
int test;
if(1)
{
if(1)
{
test=1;
}
}
return 0;
}

显然,第一个程序更加清晰。而第二个程序,如果你写漏了一个反大括号你也很难发现。

缩进的长度

这个问题没有一个固定的标准,有的人推荐8个空格的长度,有的则是4个空格

使用8个空格的优点是缩进量大,层次更加清晰。但是缺点也是显而易见的:占用了太多空间。如果你的代码中有着多层嵌套,那么你很难在一个屏幕里把他们显示完整。

这个问题的答案在于你自己的爱好,我喜欢使用4个字符的宽度

用什么字符缩进?

这个问题和上面一样,没有一个标准答案

有的人推荐使用空格,因为空格的大小是一定的。这样无论在哪儿打开你的代码,显示出来都是在你这里看到的样子。但是为了缩进,你需要按很多次空格,特别是多层嵌套的时候,你或许会为按空格而发疯。

使用table键可以减少缩进时按键的次数。但是table键的缩进长度是可以配置的。如果你用4字符,别人用设置成8字符宽度的编辑器打开,那简直就是一坨翔。

codeblocks等IDE默认的长度是4个空格。如果你愿意可以随时修改它。

哪里需要缩进?

当然是在需要缩进的地方缩进咯!

开个玩笑。

通常,在左花括号的下一行,就要增加缩进量

有些语句,即使没有花括号(其实是花括号被省略了)也要增加缩进。(请参考上面给出的代码)

空格

c语言中使用了大量的符号,但正是因为大量符号的使用

增加了代码的“密度”,代码看起来是一坨坨的。

所以我们需要人为的添加空格,稀释代码的密度。

当然空格不能随便加,需要有一定的规范

下面是本文中使用的规范

  • 运算、比较符号前后都需要加上空格,如:a + b
  • 左花括号前需要加上空格
  • if等关键字之后和正括号之前需要加空格如:if (a > 0)
  • 分号前不需加空格,但是分号后如果有代码的则需要加空格,如for  (; 1;)
  • 括号后,反括号前后无需加空格,如printf(“hello”);

空行

需要空行的位置有,函数定义前、后

一组联系紧密的代码段之前和之后

比如之前文章中给出的那个测试命令的程序,这里就不贴代码了

左括号之争,换行?不换行?

这也是一个比较蛋疼的问题

当然从使代码更清晰的角度看,作为代码段开头标识的左花括号{应该另起一行,像下面这样

int main()
{
    if (p == NULL)
    {
        printf("error!\n");
        exit(0);
    }
}

这种写法不够紧凑,还有一种写法像下面这样

int main()
{
    if (p == NULL) {
        printf("error!\n");
        exit(0);
    }
}

我更喜欢前者。值得注意的是,在定义一个函数的时候,第二种写法的左花括号总是写在下一行。

注释

注释是程序里一个很重要的东西,尽管它并不会影响编译出来的程序

合理的注释将增加代码的可读性,注释的语言应该是简洁的

初学的时候可以写很多注释,但是在熟练以后,你就需要减少注释的量了,只保留那些必要的注释

注释在两个正斜杠的后面(只能在该行写注释),或者在/*和*/之间(可以在多行写注释),比如

int main()
{
    //我是友爱的注释
    /*我也是注释*/
}

c语言最初只支持/**/写法的注释,在C90标准中,//单行注释的写法被添加到了c语言中,如果你的编译器不支持C90标准,请选择使用/**/的写法

注释在编译的时候会被替换为空格

代码风格暂时就讲这么多,后面的学习中我们还会提到。

代码风格不一定要有一个硬性的要求(当然如果在公司里合作开发项目,一般是会制定一个代码风格的)。从现在开始,你应该尝试着形成一个属于你自己的代码风格。当然前提是你看着舒服,别人也看着舒服。

命名

c语言中你可以定义变量,函数,结构体等等等等,定义这些东西就需要你去给他起一个名字

名字中允许使用的字符有下划线_和26个字母还有0-9十个数字

不过数字不能作为第一个字符出现,比如abc123是合法的名字

123abc则不是

另外。你也不应该使用关键字,因为它们已经被保留了

还有,通常情况下标准库中的一些变量名会使用下划线_最为第一个字符,如_abc,为了防止重名而产生冲突,故一般情况下不要使用下划线作为名字的第一个字符

还要提醒某些新手的是,不要使用拼音命名。(有些英语不好的新手确实会这样做)

这样会降低你的代码可读性。好的名字应该是“见名知意”,并且“言简意赅”

具体一些需要注意的事项,我们在相应的位置会有较详细的讲解。

发表评论

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