linux 代码风格,学习Linux的编码风格

对于编码,每个码农或许都会有自己的一套风格,很多人可能对编码风格压根就不关心,因为最终编译器编译出来的目标代码并不会受影响。但是在开发一个大型项目时,花费时间成本最多的永远是开发者们之间的沟通与交流。保持编码风格的一致性可以在很大程度上提高编码效率,可以让其他人更容易读懂你的代码,也让你更容易读懂其他人的代码。

在选择编码风格上,个人更青睐于Linux的编码风格,所以特意总结了一下:

1、缩进

Linux的缩进风格是用制表符(tab)每次缩进八个字符长度。这里强调的是制表符,并不是用几个空格符来替代。如果在Linux里面八个字符长度的制表符显得太长的话,那我们还是最好来修改自己的代码吧!最好不要在代码中用四层及以上的嵌套缩进。在switch...case...语句中,switch与case具有相同的缩进。

在Windows上面默认制表符是4个字符长度,所以不必去在意到底几个字符长度,只要每次缩进使用制表符即可。

2、括号

Linux的风格是:

(1)对于函数的左右括号,左右括号分别为单独的一行:

int func()

{

/* ....  */

}

(2)对于控制语句中的左右括号,左括号紧跟在语句的后面,与语句在相同的一行,而右括号新起一行,作为该行的第一个字符:

if (x){

/* .... */

}

如果接下来的部分是相同语句的一部分,那么右括号不单独占一行:

if (x){

/* ... */

}else{

/* ... */

}

或者

do {

/* ... */

}while(x);

如果不是一定要括号的语句,就忽略它:

if (x)

do_something();

else

do_otherthing();

但是对于条件语句来说,如果一个分支是一行语句,另一个语句是多行,则需要保持一致,使用花括号:

if (condition){

do_this();

do_that();

}else{

do_something();

}

3、空格

(1)在关键字“if,switch,case,for,do,while”之后需要加上空格

if (condition)

(2)在关键字“sizeof,typedef,alignof,__attribute__”之后不需要加空格:

sizeof(int);

(3)在括号里的表达式两边不需要加空格;

(4)大多数的二元和三元运算符两边需要加空格,“= + - < > * / % | & ^ <= >= == != ? :”;

(5)一元运算符后面不加空格,“& * + - ~ ! sizeof typedef alignof __attribute__”;

(6)在前缀自增自减运算符之后和后缀自增自减运算符之前不需要空格,“++ --”;

(7)结构成员运算符的两边不需要空格,“. ->”;

4、命名规范

Linux的名称中不允许使用混合的大小写字符。局部变量应该尽量可以清楚地表明它的用途;全局变量和函数应该选择包含描述性内容的名称。

5、函数

函数的代码程度不应该超过两屏,局部变量不应该超过10个。一个很大的函数尽量分成一些更短小的函数的组合,每个函数应该功能单一并且实现精准。如果担心函数调用带来开销,可以把小函数声明为inline。

如果函数的名称是一种动作或者命令式的语句,应该以错误代码的形式返回(一般0表示成功,-Exxx形式的负数表示错误),如:do_something()

如果函数的名称是判断语句,则返回值应该类似于布尔值(1表示成功,0表示失败),如:something_is_exist()

6、宏

多行的宏定义要用"do...while"来封装,如:

#define func(a,b,c) \

do { \

if (a > b) \

do_something(c); \

}while(0)

7、注释

注释应该描述的是代码要做什么和为什么要这么做,而不应该描述具体通过什么方式来实现。如何实现应该通过代码本身来展现。不要把作者,日期等一些没有意义的内容写在注释里面,这些信息应该集中写在文件最开头的地方。在Linux中采用C89的注释风格“ /* ... */ ”,不采用C99的“ // .... ”

/*

* get_foo() - return the current value of foo

* We need this to calculate the bar ratio. This can sleep,

* so do not call while holding a lock

*/

int get_foo(){

...

return foo;

}

只有在特殊情况下才会在函数里面注释。比如声明一个bug或者某个重要的假设。在注释里面,重要信息以“XXXX:”开头。

编码是一种艺术。我们码的不仅仅是代码,更是一种情怀。

0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值