FreeMan

          Java是條不歸路……

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            4 隨筆 :: 1 文章 :: 2 評論 :: 0 Trackbacks

          JAVA書寫規范

          (這條文章已經被閱讀了364次) 時間:2002年03月08日 18:59 來源:韓偉 原創-IT

          1. 命名

          1.1 Package的名字由一個小寫單詞組成;

          一個特有的包的名字的第一部分總是全部使用小寫字母,

          并應該是頂級域名中的一個,現在有com, edu, gov, mil, net, org,

          或者是在ISO標準3166,1981中定義的兩個字母的國家標識。

          這樣的規則可確定某一目錄分開的組件,部門,項目,或登陸名

          com.sun.eng , com.apple.quicktime.v2 ,org.apache.catalina

           

          1.2 Class/Interface:大寫字母開頭而其他字母都小寫;

          類的名字應是名詞,混合大小寫,每個詞的第一個字母大寫。

          盡量保證你的類的名字簡單并是描述性的。使用完整的單詞-避免

          頭字語和縮寫(除非縮寫比長的格式更廣泛使用,例如URL or HTML)

          class ImageSprite , interface RasterDelegate

           

          1.3 方法應是動詞,混合大小寫,第一個字母小寫,每個內部的詞

          的第一個字母大寫;除了變量,所有的實例、類和類的常量都

          是以小寫字母開頭的混和大小寫。內部的詞以大寫字母開頭。

          變量名字不應以下劃線或美元符$開始,盡管二者都是允許的。

          run() ,runFast() , getBackground()

           

          1.4 變量名字應簡短但有意義。變量名字的選擇應該是可記憶

          的---就是說給普通的人指出它的使用的目的,除非是臨時的。臨時變

          量的一般的名字對于整形變量是i,j,k,m,和n,對于字符是c,d,和e。

          int i;

          char c;

          float myWidth;

           

          1.5 常量:聲明類常量的變量和ANSI常量的名字為下劃線分開的

          大寫字母單詞(應避免ANSI常量,除非為了調試)

          static final int MIN_WIDTH = 4;

          static final int MAX_WIDTH = 999;

           

           

          2. 文件

          2.1 開頭:注釋(name,version,date,copyright),package,import;

          /*

          * Classname

          *

          * Version information

          *

          * Date

          *

          * Copyright notice

          */

          package java.awt;

          import java.awt.peer.CanvasPeer;

           

          2.2 Class/Interface:JavaDoc文檔注釋,體(包含程序、運行和其他注釋);

          變量,實例,方法等:按public,protect,private排列;盡量少用public。

          參見最后example

           

           

          3. 縮進

          3.1 避免每行多于80 個字符,逗號后或運算符前斷開,

          someMethod(longExpression1, longExpression2, longExpression3,

          longExpression4, longExpression5);

           

          var = someMethod1(longExpression1,

          someMethod2(longExpression2,

          longExpression3));

           

          3.2 較高級的斷開比較低級的斷開更好,新行應與同級

          上一行的開頭對齊;以下是斷開算術式的兩個例子。

          第一個較好,因為斷開出現在算術式以外,處于較高一級。

          longName1 = longName2 * (longName3 + longName4 - longName5)

          + 4 * longname6; // PREFER

           

          longName1 = longName2 * (longName3 + longName4

          - longName5) + 4 * longname6; // AVOID

           

           

          3.3 縮排的一個單位應使用4 個空格,不使用制表符而盡量使用空格。

          通常語句使用8個空格縮進,就要折行,由于傳統的(4個空格)

          縮進使觀察程序體比較難。例如:

          if ((condition1 && condition2)

          || (condition3 && condition4)

          ||!(condition5 && condition6)) { file://BAD WRAPS

          doSomethingAboutIt(); file://MAKE THIS LINE EASY TO MISS

          }

           

          file://USE THIS INDENTATION INSTEAD

          if ((condition1 && condition2)

          || (condition3 && condition4)

          ||!(condition5 && condition6)) {

          doSomethingAboutIt();

          }

           

           

          4. 注釋,Java程序有兩類注釋:文檔注釋和執行注釋。

          4.1 文檔注釋只有java具有,/**...*/。能夠被javadoc 工具生成HTML文檔,

          描述類,接口,構造器,方法和字段,相當于使用指南。

          /**

          * Class description goes here.

          *

          * @version 1.82 18 Mar 1999

          * @author Firstname Lastname

          */

           

          4.2 執行注釋是那些在使用在C++中的/*...*/和//。目的為了理解程序和運行,

          包括不適合于文檔注釋的內容,塊狀或一行,使用/*...*/,注釋程序可使用//,

          也可放在短行后面,盡量對齊。

          /*

          * @(#)Blah.java 1.82 99/03/18

          *

          * Copyright (c) 1994-1999 Sun Microsystems, Inc.

          * 901 San Antonio Road, Palo Alto, California, 94303, U.S.A.

          * All rights reserved.

          *

          * This software is the confidential and proprietary information of Sun

          * Microsystems, Inc. ("Confidential Information"). You shall not

          * disclose such Confidential Information and shall use it only in

          * accordance with the terms of the license agreement you entered into

          * with Sun.

          */

           

          /* A class implementation comment can go here. */

          // implementation comment

           

           

          5. 聲明declaration

          5.1 每行一個聲明,加以注釋;

          int level; // indentation level

          int size; // size of table

           

          5.2 不要在同一行放置不同的類型;

          int foo, fooarray[]; file://WRONG!

           

          5.3 只在塊的開始處,放置聲明;

          第一次使用時再聲明,增強代碼的可移植性。

          if (condition) {

          int int2 = 0; // beginning of "if" block

          ...

          }

          for (int i = 0; i < maxLoops; i++) { ... }

           

          5.4 方法后緊跟"(" ,"{"出現在行尾。

          Sample(int i, int j) {

          ivar1 = i;

          ivar2 = j;

          }

           

           

          6. 語句

          6.1 每行最多包括一個語句;

          argv++; // Correct

          argc--; // Correct

          argv++; argc--; // AVOID!

          if (condition) {

          statements;

          } else {

          statements;

          }

          for (initialization; condition; update) {

          statements;

          }

           

          6.2 比較重要的一個:

          try {

          statements;

          }catch (ExceptionClass e) {

          statements;

          }

           

           

          7. 空格

          7.1 利用空行分隔代碼段來提高可讀性;

          7.2 使用空行:類,接口,方法之間,在一個方法的本地變量和它的第一個語句間;

          7.3 被一個圓括號跟著的關鍵字應被一個空格所分開,

          例"while (true) { ",

          但方法不分開。

          7.4 參數列表中的逗號之后使用一個空格。

          public void doSomethingElse(Object someParam, String twoParam)

          7.5 二進制的操作符與數以空格分開,例"a = (a + b) / (c * d);" 。

           

           

          8. 其它

          8.1 避免使用一個對象來訪問一個類的(靜態)變量或方法。

          而是使用一個類的名字;

          classMethod(); file://OK

          AClass.classMethod(); file://OK

          anObject.classMethod(); file://AVOID!

           

          8.2 避免分配多個變量給同樣值在一個單獨的語句中;

          fooBar.fChar = barFoo.lchar = 'c'; // AVOID!

           

          8.3 適當使用()和{}來分隔運算和程序。

           

           

          9. 性能有關 (優化代碼,調試,運行)

          避免太多的使用 synchronized 關鍵字 ;

          盡量使用 StringBuffer 對象;

          盡量不要混合使用AWT 和 Swing 組件,等等。

           

           

          下面是一個參考范例。

          /*

          * @(#)Blah.java 1.82 99/03/18

          *

          * Copyright (c) 1994-1999 Sun Microsystems, Inc.

          * 901 San Antonio Road, Palo Alto, California, 94303, U.S.A.

          * All rights reserved.

          *

          * This software is the confidential and proprietary information of Sun

          * with Sun.....

          */

           

           

          package java.blah;

           

          import java.blah.blahdy.BlahBlah;

           

          /**

          * Class description goes here.

          *

          * @version 1.82 18 Mar 1999

          * @author Firstname Lastname

          */

          public class Blah extends SomeClass {

          /* 執行注釋. */

           

          /** classVar1 文檔注釋*/

          public static int classVar1;

           

          /**

          * classVar2 多于一行的文檔注釋

          * 注釋

          */

          private static Object classVar2;

           

          /** instanceVar1 文檔注釋 */

          public Object instanceVar1;

           

          /** instanceVar2 文檔注釋 */

          protected int instanceVar2;

           

          /** instanceVar3 文檔注釋 */

          private Object[] instanceVar3;

           

          /**

          * ...構造器 Blah 文檔注釋...

          */

          public Blah() {

          // ...執行注釋 goes here...

          }

           

          /**

          * ...方法 doSomething 文檔注釋...

          */

          public void doSomething() {

          // ...執行注釋 goes here...

          }

           

          /**

          * ...方法 doSomethingElse文檔注釋..

          * @param someParam參數描述

          */

          public void doSomethingElse(Object someParam) {

          // ...執行注釋goes here...

          }

          }

          posted on 2007-07-25 14:49 我的Java工作經歷 閱讀(605) 評論(1)  編輯  收藏

          評論

          # re: 轉帖:Java書寫規范[未登錄] 2009-02-18 16:12 Java
          不錯  回復  更多評論
            


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 新宾| 武宣县| 化州市| 郯城县| 南安市| 策勒县| 定远县| 子洲县| 井陉县| 麻阳| 手游| 金平| 铁力市| 响水县| 宁化县| 正镶白旗| 晋城| 安国市| 桃园县| 彭阳县| 宣威市| 嵊泗县| 溧水县| 尚义县| 舟曲县| 武宣县| 肃北| 长泰县| 普格县| 阿鲁科尔沁旗| 双城市| 娄底市| 广西| 阿尔山市| 洞口县| 马关县| 大埔区| 江源县| 长海县| 沁水县| 军事|