google内部使用的良好编程习惯
2013-10-13 22:52
393 查看
摘要:在进行编程训练的过程中,遵循统一的编程习惯,有利于代码的易读性和维护性,从而快速提高软件编程效率。本文主要问你介绍一些常用的优良编程习惯,参考了google内部关于编程的约定文档。还是那句话,“没有最优,统一就好”。
需要遵循的一些编程规范:
1.类型名称
1)每个单词首字母大写。
struct MyStudent;
2.变量名称
1)全局变量使用g_开头:g_total;
2)一般变量使用小写,采用下划线分割不同的单词(如果仅仅由两个单词组成,第一个单词比较常见而且在5个字符以内,可以省略下划线)
string tablename;
string table_name;
3)结构体的成员,同普通变量
struct UrlTableProperties {
string name;
int num_entries;
}
4)数组
int stages[5]
5)枚举
枚丼值应全部大写,单词间以下划线相还:MY_EXCITING_ENUM_VALUE。
枚丼名称属亍类型,因此大小写混吅:UrlTableErrors。
enum UrlTableErrors {
OK = 0,
ERROR_OUT_OF_MEMORY,
ERROR_MALFORMED_INPUT,
}
3.常量命名
使用k开头,后面和结构体变量的命名相同。
const int kDaysInAWeek = 7
4.文件名
全部使用小写,使用下划线分割不同单词。
5.函数名称
函数名以大写字母开头,每个单词首字母大写,没有下划线:
AddTableEntry()
DeleteUrl()
对参数排序时,将所有输入参数置亍输出参数前。不要仅仅因为是新添加的参数,就将其置于最后,而应该依然置于输出参数前。
这一点不是必须遵循的规则,输入/输出两用参数(通常是类/结极体发量)混在其中,会使得觃则难以遵循。
需要遵循的一些编程规范:
一、命令约定:类型,变量,函数,宏
函数命名、发量命名、文件命名应具有描述性,不要过度缩写,类型和发量应该是名词,函数名可以用动词。1.类型名称
1)每个单词首字母大写。
struct MyStudent;
2.变量名称
1)全局变量使用g_开头:g_total;
2)一般变量使用小写,采用下划线分割不同的单词(如果仅仅由两个单词组成,第一个单词比较常见而且在5个字符以内,可以省略下划线)
string tablename;
string table_name;
3)结构体的成员,同普通变量
struct UrlTableProperties {
string name;
int num_entries;
}
4)数组
int stages[5]
5)枚举
枚丼值应全部大写,单词间以下划线相还:MY_EXCITING_ENUM_VALUE。
枚丼名称属亍类型,因此大小写混吅:UrlTableErrors。
enum UrlTableErrors {
OK = 0,
ERROR_OUT_OF_MEMORY,
ERROR_MALFORMED_INPUT,
}
3.常量命名
使用k开头,后面和结构体变量的命名相同。
const int kDaysInAWeek = 7
4.文件名
全部使用小写,使用下划线分割不同单词。
5.函数名称
函数名以大写字母开头,每个单词首字母大写,没有下划线:
AddTableEntry()
DeleteUrl()
二、函数参数顺序
C/C++函数参数分为输入参数和输出参数两种,有时输入参数也会输出(注:值被修改时)。输入参数一般传值常数引用(const references),输出参数戒输入/输出参数为非常数指针(non-const pointers)。对参数排序时,将所有输入参数置亍输出参数前。不要仅仅因为是新添加的参数,就将其置于最后,而应该依然置于输出参数前。
这一点不是必须遵循的规则,输入/输出两用参数(通常是类/结极体发量)混在其中,会使得觃则难以遵循。
三、局部变量
局部变量的作用域应该尽可能小,而且在声明的时候进行初始化。四、const
能用const的地方尽量用const五、宏的使用
尽量不要使用,而是用内联函数,枚举,常量来替代。六、sizeof
尽量使用sizeof(Varname)而不是sizeof(type),因为这样可以在改变Varname的type以后程序不会出错。七、i++
能使用++i的时候就不要使用i++相关文章推荐
- 免费SVN版本控制库Google code的搭建流程,以及隐藏代码,实现伪安全
- springmvc国际化 基于请求的国际化配置
- Java RMI之HelloWorld篇
- C# 实现Ajax的方式总结
- LayoutParams和LayoutInflater理解
- ASP.NET MVC 防止 CSRF 的方法
- sctp rfc相关文档
- [每日一题] 11gOCP 1z0-053 :2013-10-13 MEMORY_TARGE初始化参数..................................51
- [每日一题] 11gOCP 1z0-053 :2013-10-13 MEMORY_TARGE初始化参数..................................51
- Java基础——Java对象杂谈
- 关于php中自增的问题
- MyEclipse安装出现 Unable to find Java environment
- java--括号匹配
- VB.net学习笔记
- 《Java语言程序设计(基础篇)》读书笔记(三)
- NetBeans的快捷键使用
- Unreal 代码流程分析
- 更改jdk后,eclipse运行jsp出错
- 用foreach实现ASP.NET中的Repeater控件的AlternatingItemTemplate的隔行自定义颜色功能,不再考虑Repeater控件一大堆垃圾了
- 为什么java.net.URLEncoder.encode方法要调用两次而不是一次呢?