代码风格及命名规范
一、代码风格
1. 风格务必保持一贯性(Consistent)
在项目里,和其他程序员的程序的风格,显得扃异,那就存在问题了。比如这个缩进,又比如变量命名方法,不同的类,不同的Methods里,各自不同,这
程序就很难看了。所以一旦你选择了某种风格,一定要贯彻始终。如果一个项目里规定了一个风格,即便很不符合你自己的习惯,也要贯彻始终,绝不应该有 标新立异。
2. 缩进风格(indent)
既然是从缩进说起,就先说说缩进风格;一般来说,象Java这样的类C语言,都采用缩进风格。而常用的,有四种 :
A.K&R风格
这是C程序最早的缩进风格,由C的发明者Ritchie和他的合作者Kernighan率先使用:
if (<cond>) {
<body>
}
B. BSD 风格
又称Allman Style,源自Unix BSD程序员Eric Allman--他为BSD写过很多程序:
if (<cond>)
{
<body>
}
特点:大括号和条件判断分在两行。
C. Whitesmith风格
这种风格源于Whitesmith C:
if (<cond>)
{
<body>
}
D. GNU风格
这种风格仅见于GNU EMACS的源程序中:
if (<cond>)
{
<body>
}
那么在Java里用哪种好呢?建议只采用A或B。SUN有一个Java Code Name Convention,建议的是A。
3. Tab还是空格(Tabs vs Space)
还是缩进问题。Java有一个特点,就是跨平台性。缩进没有注意一个风格,在有的地方用Tab键,有的地方打空格。在一些不同的平台上,Tab键的宽度
可是不一样的。所以,建议还是统一使用空格键比较好。
那么,每次用多少空格呢?4个。2个太少不明显,8个太多占空间。
4. 行宽
请记住,一行尽量不要超过80列。许多终端一个屏幕只能显示80列,为它们想想巴。如果你的语句太长,想办法折断它,分几列来写。
5. Javadoc注释
Java除了可以采用我们常见的注释方式之外,Java语言规范还定义了一种特殊的注释,也就是我们所说的Javadoc注释,它是用来记录我们代码
中的API的。Javadoc注释是一种多行注释,以/**开头,而以*/结束,注释可以包含一些 HTML标记符和专门的关键词。使用
Javadoc 注释的好处是编写的注释可以被自动转为在线文档,省去了单独编写程序文档的麻烦。
例如:
/**
* This is an example of
* Javadoc
* @author darchon
* @version 0.1, 10/11/2002
*/
在每个程序的最开始部分,一般都用Javadoc注释对程序的总体描述以及版权信息,之后在主程序中可以为每个类、接口、方法、字段添加
Javadoc注释,每个注释的开头部分先用一句话概括该类、接口、方法、字段所完成的功能,这句话应单独占据一行以突出其概括作用,在这句话后面可以
跟 随更加详细的描述段落。在描述性段落之后还可以跟随一些以Javadoc注释标签开头的特殊段落,例如上面例子中的@auther和
@version,这些段落将在生成文档中以特定方式显示。
二、命名规范
定义规范的目的是为了使项目的代码样式统一,使程序有良好的可读性。
1.包的命名
要求程序员在自己定义的包的名称之前加上唯一的前缀。由于互联网上的域名称是不会重复的,所以程序员一般采用自己在互联网上的域名称作为自己程序包 的唯一前缀。 如:com.qg.task.bean
2.类的命名
1)首字母大写 例如:MyTask 2)尽量名词 3)有意义
不规范的命名:
delete.java
jsp.java
3.方法的命名
首字母小写,后面的单词首字母大写
如:
/**
*获得数据库连接
*/
public Connection getConnection();
4.常量的命名
1)全部大写 2)见文生意 3)多个单词用下划线分割
如:public static final int APPLE_NUM = 100;
5.变量的命名
1)Camel标记法
首字母小写,后面的单词都以大写字母开头
如:String userName = null;
2)Pascal标记法
首字母大写,后面的单词都以大写字母开头
如:String UserName = null;
3)匈牙利标记法
小写序列(说明变量的类型)+Pascal标记法
如:String strUserName = null;
我们组建议使用Camel标记法!
在变量命名时要注意以下几点:
* 选择有意义的名字,注意每个单词首字母要大写。
* 在一段函数中不使用同一个变量表示前后意义不同的两个数值。
* i、j、k等只作为小型循环的循环索引变量。
* 避免用Flag来命名状态变量。
* 用Is来命名逻辑变量,如:blnFileIsFound。通过这种给布尔变量肯定形式的命名方式,使得其 它开发人员能够更为清楚的理解布尔变量所代表的意义。
* 如果需要的话,在变量最后附加计算限定词,如:curSalesSum。
* 命名不相包含,curSales和curSalesSum。
* static final 变量(常量)的名字应该都大写,并且指出完整含义。
* 如果需要对变量名进行缩写时,一定要注意整个代码中缩写规则的一致性。例如,如果在代码的某些区域中使用intCnt,而在另一些区域中又使用
intCount,就会给代码增加不必要的复杂性。建议变量名中尽量不要出现缩写。
* 通过在结尾处放置一个量词,就可创建更加统一的变量,它们更容易理解,也更容易搜索。例如,请使用 strCustomerFirst和
strCustomerLast,而不要使用strFirstCustomer和strLastCustomer。常用的量词后缀有:First(一
组变量中的第一个)、Last(一组变量中的最后一个)、Next(一组变量中的下一个变量)、Prev(一组变量中的上一个)、Cur(一组变量中
的当前变量)。
* 为每个变量选择最佳的数据类型,这样即能减少对内存的需求量,加快代码的执行速度,又会降低出错的可能性。用于变量的数据类型可能会影响该变量进行
计算所产生的结果。在这种情况下,编译器不会产生运行期错误,它只是迫使该值符合数据类型的要求。这类问题极难查找。
* 尽量缩小变量的作用域。如果变量的作用域大于它应有的范围,变量可继续存在,并且在不再需要该变量后的很长时间内仍然占用资源。它们的主要问题是,
任何类 中的任何方法都能对它们进行修改,并且很难跟踪究竟是何处进行修改的。占用资源是作用域涉及的一个重要问题。对变量来说,尽量缩小作用域将会对
应用程序的 可靠性产生巨大的影响。