Java编码规范

来源:互联网 发布:javascript网站实战 编辑:程序博客网 时间:2024/05/22 19:26

目录

1. 注释................................................................................................................................................... 1

1.1. 类注释.......................................................................................................................................................................................... 1

1.2. 方法注释...................................................................................................................................................................................... 2

1.3.变量注释...................................................................................................................................................................................... 3

1.4.其他注释...................................................................................................................................................................................... 4

1.5.块注释.......................................................................................................................................................................................... 4

2. 方法和内部类..................................................................................................................................... 6

2.1.使用顺序...................................................................................................................................................................................... 6

2.2. 变量使用及其顺序.................................................................................................................................................................... 7

2.3. 规则.............................................................................................................................................................................................. 7

3. 条件分岐............................................................................................................................................ 8

3.1.if表达式....................................................................................................................................................................................... 8

3.2.if条件判断................................................................................................................................................................................... 9

3.3.switch中的break....................................................................................................................................................................... 9

4. 循环................................................................................................................................................. 10

5. 编码................................................................................................................................................. 10

6. 缩进................................................................................................................................................. 10

7. 文件断开字符................................................................................................................................... 11

8. 警告方法.......................................................................................................................................... 11

9.一行的文字数..................................................................................................................................... 12

10.关于空白.......................................................................................................................................... 12

11.关于范围.......................................................................................................................................... 13

12import顺序.................................................................................................................................... 14

13.例外处理.......................................................................................................................................... 15


1. 注释行

1.1. 类注释行

 在定义类的那一行的前面用以下形式描述

//*****************************************************************************

/**

 * 处理内容

 *

 * @author     作者

 * @version    版本,改版日,改版内容

 */

//*****************************************************************************

处理内容

       描述类的主要处理内容

作者

描述程序作成者的名字。

③版本,改版日期、改版内容

       用逗号分开描述:程序内容变更的版本、日期、改版内容。

      新规作成时的版本是1.0 ,每更新一次加0.1

       日期取编译完成时的日期。

       新规作成时,在[改版内容]一栏里写上[新规作成]

 

Ex) 

//*****************************************************************************

/**

 *  (登陆、修正、参照、削除商品master的数据)

 *

 *@author csuinfosoft

 *@version 1.0, 2004-9-12, 新规做成

 */

//*****************************************************************************

public class NewerFram  extends Jframe implements Operations {

                              

                              

 

  版本升级时的例子                                                

* @version 1.0, 2004-9-12, <br>

*          1.1, 2005.01.21追加全部输出  <br>                                         

*          1.2  2005.02.01, 追加,assertEquals(String, byte[], byte[])  

 

 

 

1.2. 方法注释行

 在定义方法的那一行的前面用以下形式描述

//***************************************************************************

/**

 * 方法的处理内容

 *

 * @param     参数名 参数说明

 * @return     返回值说明

 * @exception       异常

 */

//***************************************************************************

   方法的处理内容

       方法处理概要的描述

   参数名 参数说明

 参数的变量名和变量内容

       ※ 有多个参数时用多行进行描述.

         没有参数时省略不写.

  返回值的说明

       返回值内容

       返回值是特定值时(true/false),分多行说明各值..

       没有返回值时省略不写.

 

④异常

       方法抛出的异常名

       ※ 有多个异常时用多行进行描述.

※ 没有异常抛出时省略不写

Ex) 

//***************************************************************************

/**

 *     指定会话移动时最初得到焦点的

 *     组件.  默认时为用addKaiwa()登陆的

 *     组件

 *

 * @param  argComp   输入component

 * @param  argKaiwaNo      会话号

 */

//***************************************************************************

public void setFirstFocus(JComponent argComp,int argKaiwaNo) {

      

      

}

 

//***************************************************************************

/**

 *   取得数据

 *

 *   @return true 有数据、false 没数据

*  @exceptionLogicException  逻辑错误

 * @exceptionFatalException   FatalException Fatal错误

 * @exceptionSQLException SQL错误

 */

//***************************************************************************

 

protected boolean getData() throwsLogicException,FatalException,SQLException {

      

      

}

 

 

1.3.变量注释行(适用于实例变量和类变量)

     在定义变量的那一行的前面用以下形式描述

/**变量的说明*/ 

 或者

/**

  *变量的说明

  */

 

    变量的说明

    描述变量的说明

 

Ex) 

       /**错误message */

       publicLabel lblErrMsg = new Label();

 

       /**

        * message code

        */

      public String messageCode;

 

※ 类变量

  定义里加了static 的变量, 即使不生成object (new class)也可以用该变量。

※ 实例变量

  定义里没加static的变量, 要生成object(new class)才可以使用。

1.4.  普通注释行

 在注释行的前面加「//

Ex)

       int iCount = 0;

       //错误时的message

       StringerrMassege = new String("ErrFfile")

 

 

1.5. 多个方法或者字段的注释

 方法・内部类按照后述的描述顺序描述、各个部分的前面用以下形式描述注释行。

 

//***************************************************************************

//处理group的名称

//***************************************************************************

①处理group的名称

       如果是描述protected方法就写成protectedメソッド」

Ex)  

       //***************************************************************************

       //protected 方法

       //***************************************************************************

      

       //***************************************************************************

       /**

        * 进行清除处理

        */

       //***************************************************************************

       protectedvoid clrData() {

             

             

       }

      

       //***************************************************************************

       /**

        * 取得当前代码的指定项的字符串数据。

        * @paramargColName    取得argColName 数据的Column名。

        * @return    从当前代码的指定项取得的字符串数据

        */

       //***************************************************************************

       protectedString getStrData(String argColName) {

             

             

      

 


2. 方法及内部类

2.1. 记述顺序

 按如下顺序描述

标准1scope

①构造函数

get/set(booleanis/set方法)方法群

       把各个成对的连起来描述。

public方法

       按照修饰符的level顺序描述。

protected方法

       修饰符的描述顺序

private方法

       修饰符的描述顺序

⑦ 内部类                                                                                       

 

标准2:修饰符

static

       順不同。

final

       順不同。

 

※有多个修饰符的情况,从修饰符多的开始描述。

Ex)

       publicstatic final 方法 

       publicstatic 方法

       publicfinal 方法

       public方法

       protected方法

 

 


2.2. 变量的描述场所和描述顺序。

 按以下顺序描述

标准1:scope

public变量

没有修饰子的变量

protected变量

private变量

 

标准2修饰符

static变量

final变量

※有多个修饰符的情况,从修饰符多的开始描述

Ex)

       publicstatic final 变量

       publicstatic 变量

       publicfinal 变量

       public变量

       protected变量

 

变量要在必要最小限度的scope里使用。

Ex) 

    

             

       for(int i1 = 0; i1 < MAX_COUNT; i++) {

         rec[i1] = new SyohinRec;

       }

 

     ×

       inti1;

             

       for(i1 = 0; i1 < MAX_COUNT; i++) {

         rec[i1] = new SyohinRec;

       }

 

 

2.3.数组的描述规则

 数组是通过在变量名前加“[]”来识别的。

 

Ex)  

           int[ ] 变量名;

       ×    int 变量名[ ];

 

 

3. 条件分支

3.1. if文的記述 

 描述if文时,不使用省略形、而是加{}进行描述。

Ex)

     

       if(cnt == 1) {

         fileName = "zaiko1.txt";

       }else {

         fileName = "zaiko2.txt";

       }

     ×

       if(cnt == 1)

         fileName = "zaiko1.txt";

       else

         fileName = "zaiko2.txt";

 

 i描述if文时,要在“if”和“(”之间、“)”和“{”之间添加半角空格。

Ex)

    

       if(cnt == 1) {

        fileName ="zaiko1.txt";

       }else {

         fileName = "zaiko2.txt";

       }

   ×

       if(cnt== 1){

        fileName ="zaiko1.txt";

       }else{

         fileName = "zaiko2.txt";

       }

 


3.2.  if的条件式  

 if的条件式 中不使用代入式。 

Ex)

    

       int  cnt = count.getCount();

              if(cnt != 0){

       if(cnt == 1) {

        fileName ="zaiko1.txt";

       }else {

         fileName = "zaiko2.txt";

       }

           }

     ×

       intcnt;

       if((cnt = count.getCount()) == 1) {

        fileName ="zaiko1.txt";

       }else {

         fileName = "zaiko2.txt";

       }

 

3.3.switch文的break

 一般的,switch文的每一个case都会描述break文,但是如果不描述break文而接着执行下一个case的処理时,为了让别人明白你不打算break就要加如下的注释。

//not break;

 

Ex)

       switch(funcNo) {

         case 4:

           func4();

           break;

         case 3:

           func3();

           //not break;

         case 2:

           func2();

           break;

         case 1:

           func1();

          break;

             :

       }

 

 


4.循环

 For循环・while循环・do-while循环、都和if文一样,要在“for,while”和“(”之间、  “)”和“{”之间加半角空格。

Ex)

       for (intiCounter = 0; iCounter < 10; iCounter++) {

         System.out.println("Looping");

       }

 

 

5.codeblock

 大括号置于在行的两端。“{”置于行末,“}”置于行首。

 “{”前加半角空格。

 

Ex)

       public voidonTPSAbort(int status) {

         try {

           //回滚

           db.rollback();

 

         } catch (Throwable ex) {

           //回滚发生错误、异常时输出这些错误、异常内容为log.

          log.ThrowableWrite(ex);

      

         } finally {

           //实例终了处理

          free();

      

         }

       }

 

 

6.indent

 Indent就是每次变化scope首行缩进2个字节。

Ex)

       if (cnt == 1) {

         fileName = "zaiko1.txt";

       } else {

        fileName = "zaiko2.txt";

       }

 

switch, case和执行文都要首行缩进.

Ex)

 

       switch (cnt) {

        case 1:

          fileName = “zaiko1.txt”;

          break;

            

       }

 ×

       switch (cnt) {

       case 1:

        fileName = “zaiko1.txt”;

        break;

          

       }

 

 

7.文件断开字符

 文件断开字符以 : System类的 getProperty 方法能取得的file.separator来作为标志的.

Ex) 

       String fileSpt =System.getProperty("file.separator");

       fileName= "txtData" + fileSpt + "zaiko" + fileSpt +"zaiko1.txt";

 

 

8.警告方法

 最好不要用用Jbuilder以及JDK进行编译时或者 是在API文档里 不被推荐的方法.

9一行的字符数

  一行最多为100字符,超过100字符时,考虑美观性和方便性要在适当的地方改行.改行后的代码要进行适当的缩进.

 

 Ex

 ○

    publicAnkenTantoCtlModel cancelTantosha(UserInformation argUserInformation,

            AnkenTantoCtlModel argAnkenTantoCtl) throws RemoteException {

    publicCollection ejbFindAnkenTantoListByShokuinNo(AnkentantoEntModelargAnkentantoEnt)

      throwsComponentEJBException {

 ×

    publicAnkenTantoCtlModel cancelTantosha(UserInformation

argUserInformation, AnkenTantoCtlModel argAnkenTantoCtl) throwsRemoteException {

   

 

10.空白

=」的前後、「,」的后面追加一个半角空白

   Ex

   ○

       int a = 1;

      funcA(data1, data2);

    ×

       int a=1;

      funcA(data1,data2);

 


 

11. scope

不要使用没意义(不要)scope.

   Ex

   

int funcA() {

      intc = 0;

      {

        inta = 1;

        intb = 2;

        c= a + b;

      }

   returnc;

}

 

变量a,b只有在指定scope 里是有效的,所以这个scope是有意义的

 

 

   ×

int funcA() {

      intc = 0;

     inta = 1;

       intb = 2;

      {

        c= a + b;

      }

   returnc;

}

 

变量a,b,c不论是在指定的scope内还是外都有效,所以这个scope没有意义.

 

 

 


12import文的顺序

import文的顺序如下

相同目录的包(package)放在一起。

No

package

1

Java package

2

Javax package

3

Org package

4

系统 package

 

   Ex

   ○

        importjava.io.*;

    import java.util.*;

        importjava.rmi.*;

        import java.security.cert.*;

 

      importjavax.ejb.*;

      importjavax.rmi.*;

        importjavax.naming.*;

 

      importorg.w3c.dom.*;

importorg.xml.sax.SAXException;

        importcom.newer..newsglobe.westerlise.guibean.*;

 

   ×

    import java.util.*;

        import javax.ejb.*;

        importjava.rmi.*;

      importjavax.rmi.*;

        importjavax.naming.*;

      importorg.w3c.dom.*;

importorg.xml.sax.SAXException;

        importcom.newer.newsglobe.westerlise.guibean.*;

        importjava.security.cert.*;

        importjava.io.*;

 


13.异常的变量名

 异常Exception的变量名基本上用ex表示。

 

   Ex

   ○

} catch(CertificateException ex) {

    ・・・

} catch (IOException ex){

    ・・・

}

 

    ×

} catch(CertificateException ex1) {

    ・・・

} catch (IOException ex2){

    ・・・

}

原创粉丝点击