好的编程风格

1。关键字 if, while, for 后有一个空格

2。=号之类的双目运算符两侧都有空格

3。后缀运算符和操作数之间不加空格 例如 s.a , foo(argu) , a[i]

4。, 号和 ; 号之后要加空格,例如 foo(argu1, argu2) for (i=0; i<20; i++)

5。关于双目运算符两侧加空格可以灵活规定,例如 distance = sqrt(x*x + y*y),突出结合方式

6。如果程序需要换行,则要与上一行的表达式对齐 foo(sqrt(x*x + y*y))

                                                                          a[i-1] + b[i-1] + c[i-1])

7。较长的字符串可以段成多个字符串,并且要对齐

       printf(“This is such a long stenance that”

                  "it can not be leld\n”);  这个 print函数中的字符串就跟一个是一样的

8。有的人喜欢在变量定义语句中使用 Tab 字符,使变量名对齐。

      int            a, b;

      double    c;

9。关于缩进的规则 建议使用 tabstop=8,看起来层次非常明显  

10。if/else , while , do/while , for , switch 等语句块的大括号,不要单独占一行 , 建议 if () {} ,并且大括号

     之前要有个空格。

11。函数定义的大括号,{},要单独占一行。

12。switch语句中的case,default对齐写,

switch风格switch (c) {
case 'A':
	haha;
	break;
case 'B':
	haha;
	break;
default :
	oo;
}

13。代码中没个逻辑段落之间应该有一个空格分开,例如全局变量与函数之间,或者函数与函数之间。

14。一个函数内,语句列表很长,分组,例如变量定义为一组加空格,语句,return 0 是一组,加空格。

15。单行注释 /* comment */ 用空格把定界符和注释分开。多行注释风格如下

多行注释/*
 *  Multi-line
 *  comment
 */

16。使用注释的场合

  • 整个源文件顶部。说明此模块信息。顶头写,不缩进
  • 函数注释,说明此函数的功能,参数,返回值,错误等等,卸载函数定义上侧,和此函数之间不留空行,顶头写
  • 相对独立的语句注释,对这一组语句做特别说明,在语句组上侧,和此语句组不留空行,与当前与剧组缩进一致
  • 代码右侧简短注释,对当前代码行做特别说明,一般为单行注释,和代码之间至少用一个空格分开,最好能上下对齐。
    函数内的注释要尽可能少,写注释主要是未了 说明你的代码“能做什么”比如函数接口的定义,而不是为了说明“怎么做”,只要代码写的清楚,“怎么做”是一目了然的,除非是特别需要提醒注意的地方菜使用函数内的注释。
  • 复杂的结构体定义比函数更需要注释。
  • 复杂的宏和变量声明也需要注释。

17。标识符命名

  • 清晰明了,可以使用完整单词和易于理解的缩写,短的单词可以采用去元音的缩写形式,长的单词可以取单词的头几个字母形成缩写。
  • 内核编码风格规定变量,函数和类型采用全小写加下划线_的方式命名,常量(比如宏定义和枚举常量)采用全大写加下划线的方式,例如 函数 radix_tree_insert 类型名 struct radix_tree_root,常量RADIX_TREE_MAP_SHIFT等 ( 不要使用匈牙利命名法)C++中可以使用大小写字母,叫做CamelCase
  • 全局函数和全局变量的命名一定要详细,不惜多用几个单词多写几个下划线,例如radix_tree_insert,因为它们在整个项目的许多源文件中都会用到,必须让使用者明确这个函数或变量是干什么用的。局部变量和只在一个源文件中调用的内部函数的命名可以简略一些。但不能太短,尽量不要使用单个字母,只有一个例外:用 i , j , k 做循环变量可以。
  • 禁止使用汉语拼音做标识符。

18。函数 ( 每个函数都应该尽可能的简单,以下内容如果不能满足,考虑分割函数)

  • 实现一个函数只是为了做好一件事情
  • 函数内部缩进不易过多,一般最多不能超过4层。
  • 函数不要写的太长,建议在24行的标准终端上不超过两屏,太长会造成阅读困难。如果一个函数在概念上是简单的,只是长度长了一点,没关系。例如一个函数是由一个大的switch语句组成,其中有很多个case,这是可以的。
  • 执行函数就是执行一个动作,函数名通常应包含动词。例如 get_current
  • 比较重要的函数定义上侧必须加注释,说明函数的功能,参数,返回值,错误码等等
  • 另一个度量函数复杂度的办法是看有多少个局部变量,一般5-10个局部变量已经很多了。

19。indent工具(可以格式化代码的工具)参数 –kr –i8

“近年来程序设计领域最好的一本书。”——Larry O’Brien, Software Development Times, July 29, 2015 Using a simple computational task (term frequency) to illustrate different programming styles, Exercises in Programming Style helps readers understand the various ways of writing progr ams and designing systems. It is designed to be used in conjunction with code provided on an online repository. The book complements and explains the raw code in a way that is accessible to anyone who regularly practices the art of programming. The book can also be used in advanced programming courses in computer science and software engineering programs. The book contains 33 different styles for writing the term frequency task. The styles are grouped into nine categories: historical, basic, function composition, objects and object interactions, reflection and metaprogramming, adversity, data-centric, concurrency, and interactivity. The author verbalizes the constraints in each style and explains the example programs. Each chapter first presents the constraints of the style, next shows an example program, and then gives a detailed explanation of the code. Most chapters also have sections focusing on the use of the style in systems design as well as sections describing the historical context in which the programming style emerged. Cristina Videira Lopes,加州大学欧文分校信息学教授,致力于大规模数据和系统的软件工程研究。她是施乐帕洛阿尔托研究中心的创始成员,还研发并维护着一个搜索引擎,为基于OpenSimulator的虚拟世界提供帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值