當(dāng)柳上原的風(fēng)吹向天際的時(shí)候...

          真正的快樂(lè)來(lái)源于創(chuàng)造

            BlogJava :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
            368 Posts :: 1 Stories :: 201 Comments :: 0 Trackbacks

           

           

           

           

           

           

           

           

          IBM GDC DL

          Teambiz后臺(tái)開(kāi)發(fā)規(guī)范

          2012年3月9日修訂版)

           

           

           

           

           

           

           

           

          撰寫:何楊

          2012年3月9日

           

           

          1. 包的命名

          包名應(yīng)全由小寫單詞組成,如com.dalpha.common.gui,com.dalpha.biz.supply

          2. 接口的命名

          Java接口采用統(tǒng)一的前綴I,如IService.java

          3. 接口實(shí)現(xiàn)類的定義

          接口實(shí)現(xiàn)類建議采用統(tǒng)一的后綴Impl,如:ServiceImpl

          4. 抽象類,普通類的定義

          可視化類:功能描述后加上相應(yīng)的后綴。

          例如:

          對(duì)于對(duì)話框,功能加Dlg,如:ContractDlg

          對(duì)于面板,功能加Panel,如:ContractPanel

          對(duì)于按鈕,功能加Btn,如:deleteBtn

          對(duì)于實(shí)用工具類,功能加Util后綴,如:FileUtil

          對(duì)于線程類,功能加Thread后綴,如:TimerThread

          對(duì)于消息主題,功能加Listener后綴或者sender后綴,如:NegotitiaonListener

          5. 常量定義

          關(guān)于常量的命名方法,在JAVA代碼中,無(wú)論什么時(shí)候,均提倡應(yīng)用常量取代數(shù)字、固定字符串。也就是說(shuō),程序中除0,1以外,盡量不應(yīng)該出現(xiàn)其他數(shù)字。常量可以集中在程序開(kāi)始部分定義或者更寬的作用域內(nèi),名字應(yīng)該都使用大寫字母,并且指出該常量完整含義。如果一個(gè)常量名稱由多個(gè)單詞組成,則應(yīng)該用下劃線“_”來(lái)分割這些單詞。

          舉例:定義最大時(shí)間常量,如下:

          Public static final String Max_Time;

          或者Public static final String MAX_TIME。

          6. 變量定義

          命名規(guī)則如下:

          一個(gè)變量名應(yīng)該是可讀的,易記的和恰如其分的。

          所有變量在其作用域內(nèi)必須有一個(gè)唯一的名稱,不要試圖用大小寫來(lái)區(qū)分不同的變量。

          變量的名稱一般應(yīng)該是名詞形式,要能體現(xiàn)出變量的作用,不要使用毫無(wú)意義的名稱給方法或者變量命名。

          使用駱駝命名法給變量命名。變量名以小寫字母開(kāi)頭,以后每遇到一個(gè)單詞則將其首字母大寫。變量名中最重要的詞應(yīng)該放在最前面。如revenueTotal(總收入), expenseAverage(平均支出)

          在體現(xiàn)變量的功能前提下縮短變量的長(zhǎng)度,變量名為6-8個(gè)字符最佳,最好不要超過(guò)18個(gè)字符。

          縮寫要少用,除非它有唯一的意義并達(dá)成了廣泛共識(shí)。避免使用程序語(yǔ)言中的保留字和關(guān)鍵字。

          在循環(huán)和多重循環(huán)中才能使用單字符的變量名,如i,j,k,切勿在其它場(chǎng)合中使用它們。

          當(dāng)變量是一個(gè)集合如數(shù)組,鏈表或哈希表時(shí)建議采用s后綴以明示出來(lái),當(dāng)其不是時(shí)切勿采用。也可以采用數(shù)組后綴s,鏈表后綴list,哈希表后綴map的做法,如users,userList,userMap。

          常用的變量命名

          數(shù)量:count

          序列:index

          總和:sum/total

          序號(hào):id

          名稱:name

          大小:size

          返回值:retval

          圖表:chart/graph/diagram

          實(shí)體:entity

          標(biāo)志:symbol  

          平均值:average

          狀態(tài):status

          幾何尺寸:width,height

          布爾變量的命名

          一般來(lái)說(shuō)在Java編程中不推薦使用匈牙利命名法,即為每一個(gè)類型的變量名前加上其類型的前綴的做法,但布爾變量例外。

          布爾變量一般以單詞is,has,can,not開(kāi)頭,如isMale,isLoggedIn, hasChild, canBeSerialized,notFound.

          常用的布爾變量后綴:done,error,passed,valid,found,success,ok

          變量名中的常見(jiàn)對(duì)仗詞

          Begin/end

          First/last

          Locked/unlocked

          Min/max

          Next/previous(prev)

          Old/new

          Opened/closed

          Visible/invisible

          Source/target

          Source/destination

          Up/down

          可視化組件變量的定義為功能加可視化后綴,比如deleteBtn

          7. 參數(shù)定義

          同普通變量定義一致。

          8. 方法定義

          函數(shù)(方法)名的首個(gè)單詞應(yīng)該是動(dòng)詞,因?yàn)樗硎疽粋€(gè)動(dòng)作,會(huì)執(zhí)行一個(gè)或多個(gè)操作。

          使用具有描述性的名稱,命名要能準(zhǔn)確的表示出函數(shù)的功能和用途,采用動(dòng)詞加名詞的形式,且長(zhǎng)度為6-18個(gè)字符。如getCurrentPage, isPrimeNumber,printArray

          一切函數(shù)都應(yīng)該以小寫字母開(kāi)頭,無(wú)論是常規(guī)函數(shù)還是靜態(tài)函數(shù),無(wú)論其是公有,私有還是保護(hù)。

          現(xiàn)舉例如下:

          C:createNegotitaion()

          R:getNegotitaion(),searchNegotitaion()

          U:updateNegotitaion()

          D:deleteNegotitaion()

          H:handleDeal()

          表示判斷的:isActive(),hasBuyer(),canDelete()

          9. 注釋的寫法規(guī)范

          注釋用來(lái)描述代碼中復(fù)雜晦澀的部分,它必須能清楚的解釋代碼的意圖而不僅僅是復(fù)述代碼,如果有些事情在代碼中不是很明顯,那么就必須要加入注釋。不要把注釋當(dāng)作不恰當(dāng)?shù)陌惷兞亢瘮?shù)名的補(bǔ)救措施,它只是代碼的有效補(bǔ)充。

          一般來(lái)說(shuō),在定義,分支,循環(huán)和重要的語(yǔ)義段前都要加上注釋,在嚴(yán)格的商業(yè)項(xiàng)目中,

          注釋一般占到代碼量的1/3左右。多行注釋使用/*….*/,單行注釋使用//。類,公有函數(shù)和成員變量一定要有清晰而規(guī)范的注釋。

          類的注釋:

          類的注釋主要包含以下幾點(diǎn):功能,作者,創(chuàng)建時(shí)間,修改者,修改時(shí)間

          /**

          * 功能: XXXXXXXX

          * 作者: XXX

          * 時(shí)間: XXXX-XX-XX XX:XX:XX

          * 修改者: XXX

          * 修改時(shí)間: XXXX-XX-XX XX:XX:XX

          */

          函數(shù)的注釋:

          函數(shù)的注釋主要包含以下幾點(diǎn):功能,作者,創(chuàng)建時(shí)間,參數(shù)說(shuō)明

          /**

          * 功能: XXXXXXXXXXXXXXXXXXXXXXXX

          * 作者: XXX

          * 時(shí)間: XXXX-XX-XX XX:XX:XX

          * 參數(shù)說(shuō)明: XXXXX

          */

          成員變量和局部變量的注釋:

          對(duì)于成員變量和重要的局部變量,注釋應(yīng)采用如下形式:

          // 功能說(shuō)明,創(chuàng)建者,創(chuàng)建時(shí)間

          如果進(jìn)行了修改,修改者應(yīng)該改寫成如下形式

          // 功能說(shuō)明,創(chuàng)建者,創(chuàng)建時(shí)間;修改說(shuō)明,修改者,修改時(shí)間

          循環(huán)和分支代碼段的注釋:

          一般來(lái)說(shuō)循環(huán)和分支都需要注釋,它們的注釋主要包含以下幾點(diǎn):條件說(shuō)明,功能說(shuō)明

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

          * 條件說(shuō)明,功能說(shuō)明

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

          10. Java 格式化及良好的布局

          如果你在編程過(guò)程中自覺(jué)使用空格,TAB,斷行,你就可以提高代碼的層次性,通過(guò)這

          樣代碼的可讀性就能得到有效提高。

          有些人在編寫代碼時(shí)依賴Ctrl+Shift+F來(lái)規(guī)整Java代碼,這是一種不好的習(xí)慣,首先它

          縱容了懶惰的惡習(xí);其次Ctrl+Shift+F不是任何時(shí)候都好用的,如在使用非Eclipse的文本編輯器編寫網(wǎng)頁(yè)中的JS代碼時(shí),缺乏自動(dòng)格式化會(huì)讓你覺(jué)得舉步維艱。如果在平常編程中自覺(jué)的使用正確的縮進(jìn),即使是在記事本上你也能將代碼保持良好的層次。

          適當(dāng)使用空行來(lái)區(qū)分不同的語(yǔ)義段,其實(shí)空行也是一種注釋,它意味著舊的代碼段的結(jié)

          束和新的代碼段的開(kāi)始。

          良好的布局并不影響執(zhí)行速度,內(nèi)存使用等程序性能,但它會(huì)讓你在日后理解代碼,檢查代碼以及修改代碼變得更容易,也是其他人在你缺位時(shí)更容易閱讀理解和修改你的代碼,編排出色的代碼會(huì)帶來(lái)視覺(jué)上和思維上的愉悅,這是非程序員不能感受到的,而精雕細(xì)琢代碼并使之達(dá)到美觀的程序員們卻會(huì)從這一過(guò)程中得到藝術(shù)的滿足。

          11. Java 程序設(shè)計(jì)約定

          有許多的有關(guān) Java 代碼可維護(hù)性和可改進(jìn)性的重要約定和標(biāo)準(zhǔn)。99.9% 的時(shí)間里,面向他人,面向你的開(kāi)發(fā)同事編程要比面向機(jī)器編程重要得多。使你的代碼為別人所理解是最重要的。

          約定目標(biāo)
          約定
          存取成員函數(shù)
          考慮對(duì)數(shù)據(jù)庫(kù)中的字段使用滯后初始化 
          使用存取函數(shù)獲得和修改所有字段
          對(duì)常量采用存取函數(shù)
          對(duì)于集合,加入成員函數(shù)來(lái)插入和刪除項(xiàng)
          一旦可能,將存取函數(shù)置為被保護(hù)類型,不是公共類型
          字段
          字段永遠(yuǎn)為私有類型 
          不要直接訪問(wèn)字段,應(yīng)使用存取成員函數(shù)
          不要使用靜態(tài)常量字段(常量),應(yīng)使用存取成員函數(shù)
          不要隱藏名字
          一定要初始化靜態(tài)字段
          最小化公共和保護(hù)接口 
          在開(kāi)始寫代碼之前定義一個(gè)類的公共接口
          按以下順序聲明一個(gè)類的字段和成員函數(shù): 
          構(gòu)造函數(shù) 
          公共成員函數(shù) 
          被保護(hù)成員函數(shù) 
          私有成員函數(shù) 
          私有字段 
          局部變量
          不要隱藏名字 
          一行代碼只聲明一個(gè)局部變量
          用一個(gè)行內(nèi)注釋說(shuō)明局部變量
          在使用局部變量之前聲明它
          僅將局部變量專注于一件事
          成員函數(shù)
          給代碼加上注釋 
          給代碼分段
          使用空白,控制結(jié)構(gòu)之前用一個(gè)空行,成員函數(shù)之前用兩個(gè)空行
          一個(gè)成員函數(shù)應(yīng)能在 30 秒內(nèi)讓人理解
          寫短小單獨(dú)的命令行
          盡量限制成員函數(shù)的可見(jiàn)性
          說(shuō)明操作的順序

           

          12. Java 命名約定補(bǔ)充

          除了以下幾個(gè)特例之外,命名時(shí)應(yīng)始終采用完整的英文描述符。此外,一般應(yīng)采用小寫字母,但類名、接口名以及任何非初始單詞的第一個(gè)字母要大寫。

          檢查點(diǎn):

          ??使用完整的英文描述符

          ??采用適用于該領(lǐng)域的術(shù)語(yǔ)

          ??采用大小寫混合使名字可讀

          ??盡量少用縮寫,但如果用了,要明智地使用,易于理解。

          ??避免使用長(zhǎng)的名字(最好小于18個(gè)字母)

          ??避免使用類似的名字,或者僅僅是大小寫不同的名字

          ??避免使用下劃線

          操作項(xiàng)

          命名約定

          示例

          實(shí)參/參數(shù)

           

          使用傳遞值/對(duì)象的完整的英文描述符

          customer, account

          字段/屬性

          字段采用完整的英文描述,第一個(gè)字母小寫,任何中間單詞的首字母大寫。

          firstName, lastName, warpSpeed

          布爾型的獲取成員函數(shù)

          所有的布爾型獲取函數(shù)必須用單詞 is 做前綴。如果你遵守前文所說(shuō)的布爾字段的命名標(biāo)準(zhǔn),那么你只需將字段名賦給它即可。

          isPersistent(), isString(),
          isCharacter()

          采用完整的英文描述符,所有單詞的第一個(gè)字母大寫。

          Customer, SavingsAccount

          編譯單元文件

          使用類或接口的名字,或者如果文件中除了主類之外還有多個(gè)類時(shí),加上前綴 java 來(lái)說(shuō)明它是一個(gè)源碼文件。
          Customer.java,
          SavingsAccount.java,
          Singleton.java

          組件/ 部件

          使用完整的英文描述來(lái)說(shuō)明組件的用途,末端應(yīng)接上組件類型。
          okButton, customerList,
          fileMenu

          構(gòu)造函數(shù)

          使用類名
          Customer(), SavingsAccount()

          異常

          通常采用字母 e 表示異常。第二層用ex
          e, ex

          靜態(tài)常量字段(常量)

          全部采用大寫字母或者首字母大寫的方式,單詞之間用下劃線分隔。一個(gè)較好的方法是采用靜態(tài)常量獲取成員函數(shù),因?yàn)樗艽蟮靥岣吡遂`活性。
          MIN_BALANCE, DEFAULT_DATE
          Max_Time

          獲取成員函數(shù)

          被訪問(wèn)字段名的前面加上前綴 get。
          getFirstName(), getLastName(),
          getWarpSpeeed()

          接口

          采用I前綴加上完整的英文描述符說(shuō)明接口封裝,所有單詞的第一個(gè)字母大寫。
          IRunnable, IContactable,
          IPrompter, ISingleton
          局部變量
          采用完整的英文描述符,首字母小寫,但不要隱藏已有字段。例如,如果有一個(gè)字段叫 firstName,不要讓一個(gè)局部變量叫 firstName。
          grandTotal, customer,
          newAccount
          循環(huán)計(jì)數(shù)器
          通常采用字母 i,j,k 或者 counter 都可以接受。
          i, j, k, counter
          采用完整的英文描述符,所有單詞都小寫。
          com.ambysoft.www.
          persistence.mapping
          成員函數(shù)
          采用完整的英文描述說(shuō)明成員函數(shù)功能,第一個(gè)單詞盡可能采用一個(gè)生動(dòng)的動(dòng)詞,第一個(gè)字母小寫。
          openFile(), addAccount()
          設(shè)置成員函數(shù)
          被訪問(wèn)字段名的前面加上前綴 set。
          setFirstName(), setLastName(),
          setWarpSpeed()

           

          13. Java 常用開(kāi)發(fā)術(shù)語(yǔ)表

          A

          Abstract class:抽象類

          Abstract method:抽象方法

          Annotation:注釋

          Anonymous class:匿名類

          API(Application Programming Interface):應(yīng)用編程接口,由方法和語(yǔ)言構(gòu)成的庫(kù).

          ArrayList:實(shí)現(xiàn)了List接口的動(dòng)態(tài)數(shù)組

          Assertion:斷言

          Atrribute map:屬性映射

          Autoboxing:自動(dòng)裝箱,表示一個(gè)內(nèi)置類型如int和它的包裝類如Integer之間的自動(dòng)轉(zhuǎn)換

          B

          Boolean function:布爾函數(shù)

          Bytecode:字節(jié)碼

          C

          Casting:類型強(qiáng)制轉(zhuǎn)換

          Channel:頻道

          ClassCastException:當(dāng)一個(gè)對(duì)象引用強(qiáng)制轉(zhuǎn)換程一個(gè)不兼容的類型時(shí)出現(xiàn)的異常.

          Collection:一個(gè)表示對(duì)象組或集合的接口

          CSV(Comma-separated values):一種用于存儲(chǔ)表格數(shù)據(jù)的文件形式

          Complier:編譯器

          Compose:合成

          Composite function:復(fù)合函數(shù),通過(guò)多個(gè)函數(shù)創(chuàng)建的一個(gè)函數(shù)

          D

          Decimal:十進(jìn)制

          Deep:深度

          DOM(Document Object Model):文檔對(duì)象模型,一種采用樹(shù)形表示來(lái)處理XML數(shù)據(jù)的API.

          Database:數(shù)據(jù)庫(kù)

          E

          Edge:邊

          Element:元素,XML文檔中的一個(gè)節(jié)點(diǎn).

          Encapsulation:封裝

          End tag:結(jié)束標(biāo)簽

          Enum:枚舉

          Escaping:轉(zhuǎn)義

          F

          Function:函數(shù)

          Fuzzy search:模糊搜索

          G

          Generic:泛型

          Graph:圖

          GUI:用戶圖形界面

          Grid computing:網(wǎng)格計(jì)算

          Group:組

          H

          HashMap:一個(gè)將鍵值映射到值的查找對(duì)象

          Heap memory:堆內(nèi)存

          HTML(Hyper Text Markup Language):超文本標(biāo)記語(yǔ)言

          HTTP(HyperText Tranfer Protocol):超文本傳輸協(xié)議

          I

          Inheritance:繼承

          Inner class:內(nèi)部類

          Iterator:允許迭代到任何Collection類的一個(gè)接口

          J

          JDBC(Java Database Connectivity):java數(shù)據(jù)庫(kù)連接,一種屬于Java核心庫(kù)的用于操作關(guān)系數(shù)據(jù)庫(kù)的API.

          JDK(Java Development Kit):java開(kāi)發(fā)工具包

          JRE(Java Runtime Environment):java運(yùn)行時(shí)環(huán)境

          JSP(Java Server Page):java服務(wù)頁(yè)

          JVM(Java Virtual machine):Java虛擬機(jī)

          JavaDoc:屬于JDK的一種文檔生成工具

          JavaScript:運(yùn)行于客戶端,用于HTML處理的一種輕量級(jí)教本語(yǔ)言,語(yǔ)法部分類似于Java.

          L

          Layout:布局

          Lexical analysis:詞法分析

          Linked List:鏈表

          M

          Matcher:一個(gè)用于正則表達(dá)式模式匹配的Java類

          Metadata:元數(shù)據(jù)

          Millisecond:微妙

          N

          Namespace:命名空間

          Neural network:神經(jīng)網(wǎng)絡(luò)

          Node:節(jié)點(diǎn)

          O

          Object-oriented programmming:面向?qū)ο缶幊?/span>

          Object pool:可以從中獲得對(duì)象的一個(gè)實(shí)例池

          Origin:原點(diǎn)

          Override:子類覆寫父類的方法

          P

          Parser:分析器

          Patch:補(bǔ)丁

          Pattern:模式

          Polymorphism:多態(tài)性

          Port:端口

          Predicate:謂詞

          Prefix:前綴

          Procedural language:過(guò)程式語(yǔ)言,如C

          Property:屬性

          R

          Real time:實(shí)時(shí)

          Recursive:遞歸

          Reference:引用

          Reflection:反射

          Regular expression:正則表達(dá)式

          Relative:相對(duì)

          Resource:資源

          Runnable:多線程編程使用的一個(gè)接口.

          S

          Syntax:語(yǔ)法

          Screen scraping:屏幕抓取

          Split:分割

          State:狀態(tài)

          Static:靜態(tài)

          Sequence:序列

          Swing:構(gòu)建在AWT上更高級(jí)的圖形用戶界面

          Synchronized:同步,用于線程安全協(xié)作的技術(shù)

          T

          Tag:標(biāo)簽

          Thread:進(jìn)程

          Tiger : Sun給Java1.5的代號(hào)

          Token:標(biāo)記

          Translation:平移

          Triple:三元組

          Type:類型

          U

          Unicode:統(tǒng)一字符界面

          Unit testing:單元測(cè)試

          V

          Visitor pattern:訪問(wèn)者模式

          W

          WAR(Web Application Archive):Web應(yīng)用程序歸檔

          Web Service:Web服務(wù)

          Weight:權(quán)

          Well-formed:格式良好的

          Whitespace:空白符

          X

          XML(Extensible Markup Language):一種描述分級(jí)數(shù)據(jù)結(jié)構(gòu)的文本標(biāo)記語(yǔ)言

           

          posted on 2012-03-14 10:25 何楊 閱讀(508) 評(píng)論(0)  編輯  收藏 所屬分類: Teambiz
          主站蜘蛛池模板: 屏边| 万源市| 林西县| 长顺县| 麦盖提县| 囊谦县| 永和县| 古田县| 昌都县| 曲阜市| 错那县| 潼南县| 双流县| 平度市| 泗阳县| 临漳县| 禄丰县| 隆尧县| 左云县| 佛教| 博客| 怀集县| 阜新市| 乐都县| 奉节县| 襄垣县| 武陟县| 承德市| 探索| 乾安县| 桑日县| 通辽市| 浠水县| 海兴县| 盱眙县| 吉首市| 永福县| 阿克苏市| 安达市| 苏尼特右旗| 望奎县|