日企編碼規(guī)范_第1頁
日企編碼規(guī)范_第2頁
日企編碼規(guī)范_第3頁
日企編碼規(guī)范_第4頁
日企編碼規(guī)范_第5頁
已閱讀5頁,還剩24頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

Java

編碼規(guī)范

JavaCodingStandard

目錄

Java編碼規(guī)范概要

41代碼風格

41.1一般格式說明

41.2基本結構

42代碼結構

52.1變更履歷

52.2Package聲明

72.3Import聲明

82.4ClassHeader92.5Class102.6常量(

MenifestVariables)

122.7成員變量(

InstanceVariables)

132.8初始塊(

InitializerBlocks)

132.9構造器(

Constructors)

142.10屬性(

Properties)

152.11方法(

Methods)

152.12內部類(

InnerClass)

213例子

21編碼規(guī)范

241命名規(guī)范

241.1Package命名規(guī)范

241.2Class命名規(guī)范

251.3Method命名規(guī)范

271.4變量命名規(guī)范

292代碼風格規(guī)范

312.1控制語句風格規(guī)范

312.2命令語句風格規(guī)范

332.3聲明語句風格規(guī)范

353書寫格式規(guī)范

384設計規(guī)范

414.1質量測定基準(

Metrics)規(guī)范

414.2Class設計規(guī)范

414.3Method設計規(guī)范

434.4變量設計規(guī)范

445Java語言規(guī)范

465.1Object整體規(guī)范

465.2修飾符規(guī)范

485.3Javadoc規(guī)范

505.4Import規(guī)范

515.5字符串規(guī)范

515.6數值規(guī)范

535.7日期規(guī)范

545.8集合規(guī)范

545.9Stream規(guī)范

555.10例外規(guī)范

565.11線程規(guī)范

575.12Servlet規(guī)范

595.13EJB規(guī)范

61

Java

編碼規(guī)范概要Java

代碼風格概要說明如下。代碼風格一般格式說明除字符串和注釋內以外,代碼中的空格一律為半角。代碼中不應有

[TAB]

字符(除字符串內),需要

[TAB]

字符的地方一律替換成

4

個空格。代碼中換行和

DOS

系統(tǒng)相同,為

/r/n

。代碼應當有縮進,縮進為

4

個空格。缺省的一行代碼最大長度為

80

個半角字符,假如超過這個長度就需要換行。一般的情況下,換行后應縮進四格。任何可以省略大括號的地方都不應省略大括號。

基本結構一個類

/

接口的基本結構應當是這樣的。以下依次說明。

代碼結構

變更履歷范例

說明

“文獻”的第一行是正文,在它前面沒有

NULL

行。當客戶規(guī)定代碼規(guī)約的時候,使用上述模版。其中需要修改的部分已經用粗體

標出。在“變更履歷”中有一部分是版本編號(

ver

),具體的編號方法依從項目制定的版本變更策略。在“變更履歷”的版權信息中,有關于年份的描述。其中“

2023”

是指這個類第一次發(fā)行的年份;“

2023”

是指這個類最后一次發(fā)行的年份。在“變更履歷”的版權信息中,有關于版權所有者的描述。其中的“

NeusoftBusinessSoftware”

,根據不同的項目,可以修改成TOSHIBA

等字樣。假如項目中有相關的許可信息(

license

),這些信息可以在“

LINCENSEINFORMATION”

處加入。假如項目中,變更履歷使用

CVS

等源碼管理系統(tǒng)維護,那么此“變更履歷”可以精簡為

Package

聲明范例

說明

在客戶沒有明確指定

package

的條件下,

package

遵循以下命名規(guī)則:package

名所有為小寫字母,中間用“

.”

分割。package

名中嚴禁使用除小寫英語句半角字母以外的任何字符,但是根據需要可以使用下劃線“

_”

。例如

標準的

package

名可以分為三部分:

<

公司名

>.<

應用程序名

>.<

包名

>

。其中“公司名”部分可以是“公司名稱

+

部門名稱”。例如根據需要“公司名”部分也可省略。其中“應用程序名”部分可以是“應用程序名稱

+

子程序名稱”。例如一般來說,“應用程序名”部分不能省略。其中“包名”部分應當根據程序設計的包結構來定義;“包名”這部分可以根據需要省略。通常,“

Package

聲明”部分不能省略。假如是應用程序比較簡樸,可以簡化

package

的名稱。例如,簡樸的實驗使用的類,可以命名為“

myapp.test”

或者“

test”

;假如是一個小程序,可以命名為“

myapp”

或者“

main”

。規(guī)定在每個

package

的目錄下(前提是這個

package

中有

class

文獻),都必須有一個

package.html

文獻。使用這個文獻來描述這個

package

的信息。

Import

聲明范例

説明“Import

聲明”內部沒有

NULL

行。“Import

聲明”的順序是java.*->javax.*->

中間件、庫等提供的

package->

程序中的

packageImport

需要指出

import

哪一個類,嚴禁

import

整個

package

。例如通常程序內部用到的

package

都是用

import

語句聲明在程序頭部;原則上,程序內部不再出現(xiàn)沒有

import

聲明的類。例如但是會混淆的聲明應當在程序中特別指出是那一個

package

中的。例如:程序中用到的類應當在

Import

中聲明,但是程序中沒有用到的類不要出現(xiàn)在

Import

中。例如

ClassHeader范例

說明

“ClassHeader”

可以分為

3

部分——說明部分、版本信息和其他信息,中間使用

NULL

行分割。程序中的每一個類都必須有

Class

注釋。根據需要,

Class

注釋中除了說明部分不能省略外,版本信息和其他信息都可以省略。Class

注釋中的說明部分的寫法參考范例,根據需要,可以省略其中的一些說明部分(可省略的部分后標有可選)。Class

注釋的版本信息中,除

@since

可以根據需要省略外,其他的都不可省略。Class

注釋的版本信息要上下對齊。@version

信息的結構是“

Ver<

版本

><

日期

><

狀態(tài)

>”

。其中“版本”是項目版本,具體依據項目制定的版本變更規(guī)范;其中“日期”為此文獻最后一次修改的日期;其中狀態(tài)有兩種選擇“新規(guī)做成”和“改訂”。@since

信息的結構是“

<

項目名稱

>Ver<

版本

>”

。其中“項目名稱”可以是項目的全稱也可以是項目的簡稱,但是要注旨在整個項目中這個名稱應當不變;其中“版本”是這個類第一次被創(chuàng)建時的項目版本,具體依據項目制定的版本變更規(guī)范。Class

注釋的其他信息中,

@see

@deprecated

都可以省略。@deprecated

的說明信息的結構是“

<

在哪個版本中不推薦使用

><

使用哪個類替代

>”

。例如根據需要,選擇上面兩種表述方法中的一種,替換劃線部分,做成需要的

@deprecated

信息。

Class范例

說明

ClassBody

應當縮進

4

格。Class

的最后一行規(guī)定以“

}///:~”

結尾。這樣做有以下好處。標明到了文獻最后一行。防止不小心刪除最后一個字符(大括號)。有些編輯器可以去除每行后的空格,但是也有也許把這個大括號刪除了。以這樣結尾,可以防止這一點。Class

聲明部分可以分為

4

部分——

Class

前綴、

Class

名、擴展信息和例外信息。Class

聲明的結構是“

[public/protected/private][final/abstract/static/strictfp]class/interface<

類名

>[extends…][implements…][throws…]”

。關于

public/protected/private

,在一般情況下(指

Top-LevelClass

),規(guī)定所有的類都應當顯式聲明為

public

。關于

final

,假如項目中沒有顯式地強調安全性,規(guī)定嚴禁將一個類聲明為

final

。關于

abstract

,假如一個類可以聲明成

interface

,規(guī)定嚴禁把類聲明為

abstract

;假如一個類中沒有

abstract

的方法,規(guī)定嚴禁把類聲明為

abstract

。不能繼承聲明為

static

的類。假如項目中不涉及到嚴格的數據運算(譬如,強調

float

double

的運算),那么嚴禁把類聲明為

strictfp

。Class

的命名遵循以下規(guī)則。Class

的名稱應當是一個名詞短語??梢允恰靶稳菰~

/

名詞

+

名詞”的形式。例如

InputDataStream

、

Developer

、OrderItem

等。Class

的名稱由

1

個或

1

個以上的英語句單詞組成,其中每一個英語句單詞的首字母應當大寫,其余字母小寫。規(guī)定

Class

名稱只能由

26

個英文字母組成。Class

命名應當具有一致性。(一致性是指,假如在設計階段擬定了一個實體,那么和這個實體相關的

Class

應當具有一致的名稱。舉例來說,“用戶”這個實體可以被稱作

User

、

Account

或者

Person

。假如決定使用

User

來表達這個實體的話,則相應的

Class

名應當是

UserFile

UserFileParser

等,避免在系統(tǒng)中出現(xiàn)既有

UserFile

又有

AccountFileParser的情況。)表達復數的

Class

可以命名為“單數

+s”

的形式。例如,

User

Users

Action

Actions

、

Mapping

Mappings

等。Interface

的名稱可以是一個名詞或者是一個形容詞。例如

IService

IRunnable

。規(guī)定

Interface

名稱只能由

26

個英文字母組成。Interface

的名稱由

1

個或

1

個以上的英語句單詞組成,其中每一個英語句單詞的首字母應當大寫,其余字母小寫;規(guī)定Interface

的名稱前應當有一個“

I”

。實現(xiàn)

Interface

的類一般地應當加上后綴“

Imp”

。例如,接口

IListener

相應

MyListenerImp

。關于

Class

聲明部分的縮進,可以在如下形式中選擇一種。

常量(

MenifestVariables

)范例

說明

類中常量的聲明位于類的最前面,和類的聲明之間

NULL

一行。在聲明常量的時候給它付值。規(guī)定常量應當被修飾為

public

、

static

final

;一般地,把

public

改成

protected

private

沒有特別大的意義。常量的名稱使用

26

個英語句大寫字母和下劃線“

_”

組成。如無設計上的必要,規(guī)定把常量寫在

class

中代替把常量寫在

interface

中。

成員變量(

InstanceVariables

)范例

說明

在聲明變量時應當給它付值。卻省對象付值為

null

;整型、長型、浮點型等為

0

;布爾型為

false

。一般地,類成員變量聲明為

private

。假如需要訪問,則提供相應的

getter

setter

方法。原則上不通過

instance._variable

的方式訪問。假如設計上無繼承擴展的考慮,則不應聲明為

protected

。規(guī)定類成員變量不聲明為

friendly

。類成員變量的名稱使用

26

個英文字母并且規(guī)定使用下劃線“

_”

開頭。類成員變量是否為

static

應當在設計時決定。一般地,不要把類成員變量聲明為

final

(即,假如聲明為

final

,那么必須聲明static

,作為常量使用)。

初始塊(

InitializerBlocks

)范例

說明

是否使用

staticblock

應當在設計時決定。原則上,在聲明類成員變量的時候同時進行初始化。如非必要,不應把聲明時的初始化工作在

staticblock

中做。例如

構造器(

Constructors

)范例

說明

缺省的構造器必須顯示的聲明。如無設計上的規(guī)定,構造器一律聲明為

public

;對于

SingLETon

模式,構造器可以聲明為

private

;在不是必要的條件下,不應把構造器聲明為

protected

friendly

。假如缺省構造器中沒有任何代碼,則應使用“

//null”

標注。

屬性(

Properties

)范例

說明

請在類中做

getter

方法、

setter

方法,方法的命名遵循

JavaBean

屬性的命名規(guī)范。

getter

方法使用“

get+

屬性名”;

setter

方法使用“

set+

屬性名”;對于返回

boolean

getter

,使用“

is+

屬性名”。與屬性相應的類成員變量的名字同屬性名相同。例如,上例中,屬性“

name”

相應的類成員變量是“

_name”

。屬性名使用

26

個英文字母組成。屬性的

getter

setter

方法應當為

public

。

方法(

Methods

)范例

說明

方法部分中,每個方法之間有一

NULL

行。一個方法的注釋中,包含這個方法的說明、參數說明、返回值說明、例外說明和

@since

(或

@deceprated

)。規(guī)定,這幾個部分在方法中存在的情況下,必須給出相應的說明。例如,假如方法有返回值,則必須給出

@return

的說明。假如方法的參數和返回值有特殊規(guī)定,一定要在注釋中寫明。例如,關于方法的

@since

@deceprated

參見

ClassHeader

部分。關于參數說明、返回值說明等的對齊,參見

ClassHeader

部分。關于方法聲明的縮進,參見

Class

部分。一個方法聲明為

public/protected/private

應當在設計時決定。原則上,假如沒有聲明為

protected

的理由,就聲明為

private

;一般來說,不應將方法聲明為

friendly

。方法命名應當使用動賓結構。例如“

openAccount()”

、“

save()”

、“

printMailingLabel()”

等。關于方法內部的實現(xiàn):一個方法只完畢一個特定的功能。(規(guī)定是可以用一句話描述這個方法的作用,假如用兩句、或兩句以上的話才干描述這個方法的作用,說明這個方法過于復雜。)方法內部的寫法一般地有兩種

相應的代碼舉例如下

方法內部的解決流程如下

在方法內部的注釋要寫明

Why

,而不是

What

。例

For

循環(huán)使用

i

、

j

k

作為循環(huán)變量。例如:對的使用空格。例如:

調整代碼風格。例如

使用

try-catch-finally

結構來

closestream

connection

等需要

close

的對象。這里需要注意的是,在

finallyblock

中把一個

try-catch

寫在一行中是只限于這里的特殊寫法,在其他地方不允許把兩個大括號寫在一行。

內部類(

InnerClass

)范例

說明

內部類中的變量定義、函數定義的規(guī)定和類中的規(guī)定相同。假如沒有設計上的規(guī)定,一個內部類應當被聲明為

private

。假如使用一個內部類表達枚舉類型,那么可以將它聲明為

static

。一般地,不要把一個內部類聲明為

abstract

final

。例子

(繼續(xù))(繼續(xù))

編碼規(guī)范

命名規(guī)范

Package

命名規(guī)范N_PKG001

Package

名要使用小寫字說明

·

因素如無特殊規(guī)定,請將

Package

名統(tǒng)一成小寫字。這是

Java

的一般規(guī)則。例

N_PKG002

Package

名要故意義說明

·

因素盡量給

Package

命名一個能聯(lián)想到

Package

內容的名字。假如使用功能

ID

、流水號等來命名

Package

的話,不能立即明白其意思。遵守此規(guī)范,將提高代碼的易讀性。例

N_PKG003

Package

名是不可省略的說明

·

因素即使

Package

名長,也請盡量不要省略,而使用易懂的名字。例

Class

命名規(guī)范N_CLS001

Class

名要能體現(xiàn)其作用說明

·

因素Class

名中,請不要使用功能

ID

、流水號等難懂的名字。

Class

名要使用故意義的字符串,以便能聯(lián)想到其

Class

的內容。這樣將提高代碼的易讀性。例

N_CLS002

Class

名中單詞的第

1

個字母要大寫說明

·

因素請大寫

Class

名的第

1

個字母。當

Class

名由多個單詞組成時,每個單詞的第

1

個字母(段落)都要大寫。這是

Java

的一般規(guī)則。例

N_CLS003

例外

Class

名的最后要加上“

Exception”說明

·

因素對例外

Class

名,請在

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論