代码风格及命名规范

一、代码风格 
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(一组变量中 
   的当前变量)。 

* 为每个变量选择最佳的数据类型,这样即能减少对内存的需求量,加快代码的执行速度,又会降低出错的可能性。用于变量的数据类型可能会影响该变量进行 
   计算所产生的结果。在这种情况下,编译器不会产生运行期错误,它只是迫使该值符合数据类型的要求。这类问题极难查找。 

* 尽量缩小变量的作用域。如果变量的作用域大于它应有的范围,变量可继续存在,并且在不再需要该变量后的很长时间内仍然占用资源。它们的主要问题是, 
   任何类 中的任何方法都能对它们进行修改,并且很难跟踪究竟是何处进行修改的。占用资源是作用域涉及的一个重要问题。对变量来说,尽量缩小作用域将会对 
   应用程序的 可靠性产生巨大的影响。 

 

posted @ 2013-02-27 18:11  vincent_hv  阅读(765)  评论(0编辑  收藏  举报