轉:
1 前言
為了使軟件開(kāi)發(fā)過(guò)程有章可循,保證軟件質(zhì)量,加強開(kāi)發(fā)管理。
2 開(kāi)發(fā)管理
項目進(jìn)度周報表格如下:
項目編號:
匯報人:
匯報日期:
項目進(jìn)度詳細描述:
其他問(wèn)題:
3 項目周期
司項目開(kāi)發(fā)周期分為以下幾個(gè)步驟:
步驟 說(shuō)明 參與角色 生成文檔或程序(打*號為可選)
可行性分析 對項目的技術(shù),功能需求和市場(chǎng)進(jìn)行調研和初步分析,確定是否需要立項開(kāi)發(fā)。 部門(mén)主管核心技術(shù)員 可行性分析報告*技術(shù)調研報告* 立項 正式立項,由部門(mén)主管指定項目經(jīng)理,項目經(jīng)理制定初步計劃。初步計劃包括設計和開(kāi)發(fā)時(shí)間的初步估算。 部門(mén)主管核心技術(shù)員 項目初步計劃 需求分析 對項目進(jìn)行詳細的需求分析,編寫(xiě)需求分析文檔。對于B/S結構軟件系統需要制作靜態(tài)演示頁(yè)面。需求分析文檔和靜態(tài)演示頁(yè)面需要通過(guò)部門(mén)主管審批才能夠進(jìn)行到下一個(gè)步驟 項目經(jīng)理項目核心小組 需求分析文檔靜態(tài)演示頁(yè)面項目計劃修訂版本詳細設計 根據需求分析對項目進(jìn)行詳細設計。詳細設計以后,項目經(jīng)理同部門(mén)主管一起指定項目小組開(kāi)發(fā)成員。 項目經(jīng)理項目核心小組 詳細設計文檔項目計劃確定版本開(kāi)發(fā) 根據設計開(kāi)發(fā)項目,由美工對操作界面進(jìn)行美化。 項目經(jīng)理項目開(kāi)發(fā)員美工 項目計劃修訂版本*測試 項目經(jīng)理提交測試申請,由測試部門(mén)對項目進(jìn)行測試。項目小組配合測試部門(mén)修改軟件中的錯誤。 項目經(jīng)理項目開(kāi)發(fā)員測試部 測試申請測試計劃測試報告 項目驗收 項目驗收歸檔 部門(mén)主管項目經(jīng)理 項目所有文檔和程序
4 命名規范
4.1 項目編號命名規范
待完善
4.2 文檔命名規范
待完善
4.3 jsp/html命名規范
jsp與html文件名全部小寫(xiě),并遵循如下的規范:
數據/內容顯示頁(yè)
名詞,多個(gè)單詞用下劃線(xiàn)分隔,要求能說(shuō)明顯示內容的信息,為避免沖突,可加上 “_list”。例如:
new_message.html 或 my_file_list.jsp
操作處理頁(yè)
命名格式:名詞_下劃線(xiàn)_動(dòng)詞,例如:file_delete.jsp。
含frame頁(yè)面
<frameset>中<frame>的name屬性命名的格式是①xxx._②xxx_③xxx
?、賦xx部分用來(lái)標識當前頁(yè)面隸屬于整個(gè)系統中的哪一功能模塊。
如:屬于ebwebmail則被表示為ebwebmail,其它情況依次類(lèi)推。
?、趚xx部分標識當前頁(yè)面所要完成的功能。
如:完成用戶(hù)登錄的功能則被標識為login,其它情況依次類(lèi)推。
?、踴xx部分用來(lái)用來(lái)表示頁(yè)面在瀏覽器窗口所處的位置。
處于瀏覽器窗口的頂部則標識為top,其它情況依次類(lèi)推。
例如:ebwebmail_inbox_top.jsp
<frame> src屬性相應的文件名根據情況建議在原命名規范上用下劃線(xiàn)加上所處窗口的位置。
javascript腳本方法
腳本函數都以①xxx_②xxx的方式命名。
?、賦xx對應頁(yè)面隸屬的模塊。
?、趚xx表示函數所要實(shí)現的功能(動(dòng)賓結構),多個(gè)單詞用下劃線(xiàn)連接。
例如:ebwebmail_send_mail()
模塊通用的腳本函數必須集合于一個(gè)js文件中,在頁(yè)面上通過(guò)<script language=”javascript” src=”url”></script>形式導入。js文件名命名使用模塊名,例如:ebwebmail.js。
如果項目已經(jīng)提供了公共js腳本,則優(yōu)先使用公共js腳本中提供的函數。
所有定義方法的<script>元素定義在<head></head>中或</body>后。
javascript腳本內部變量與參數
單詞之間用下劃線(xiàn)分隔且全部小寫(xiě),例如: var file_size。
<form>表單name屬性
統一以“form_”開(kāi)頭,其后加該表單所需收集的信息的作用或動(dòng)作,例如:form_file_upload 或 form_send_mail。
表單elements
表單element的名稱(chēng)以element需收集的信息標示命名,單詞之間使用下劃線(xiàn)分隔且全部小寫(xiě),例如:
<input type=”text” name=”username”>
<input type=”radio” name=”file_type”>
<textarea name=”content” rows=”5” cols=”40”>
cookie命名
命名格式:模塊名_存儲信息名詞(多個(gè)單詞用下劃線(xiàn)分隔) ,全部大寫(xiě),例如:EBWEBMAIL_SORT_TYPE。
window.open中name參數的命名
javascript的window.open方法中有一個(gè)name的參數,瀏覽器約定同樣的名字的窗口只能打開(kāi)一個(gè),如果程序間名字重復將相互沖突。如果不限制打開(kāi)窗口數,可以指定‘’或“”(不是null),否則需要加上模塊名,例如ebwebmail_viewmail。
4.4 數據庫命名規范
數據庫表命名均遵循以下規范:
模塊名_存儲信息名詞(多個(gè)單詞用下劃線(xiàn)分隔),全部小寫(xiě),例如:ebwebmail_message。
數據庫字段命名遵循以下規范:
存儲信息名詞(多個(gè)單詞用下劃線(xiàn)分隔),全部小寫(xiě),例如:message_id。
5 文檔規范
1. 編寫(xiě)文檔目前主要使用的工具是Word(項目計劃文檔例外,需要使用Project制作),輔助使用的工具有Visio,PowerPoint,ERWin等。
2. 文檔務(wù)必保持段落格式整齊,文字字體,顏色,大小統一。
3. 如果需要摘引html頁(yè)面中的內容,不能直接從html中粘貼過(guò)來(lái)(會(huì )在word文檔中留下html格式),而必須先去除格式,例如:先粘貼到notepad中。
4. 務(wù)必注意中英文標點(diǎn)符號,文檔正文一概使用中文標點(diǎn)符號。
5. 如果需要在文檔中插圖,不要使用word自帶的繪圖工具??梢赃x擇使用PowerPoint或visio。使用PowerPoint,選擇“插入”->“對象”->“Microsoft PowerPoint 幻燈片”。使用visio,需要另外建立visio文檔,繪制完以后粘貼到word中。
6. 數據建模使用ERwin工具,文檔中僅需要粘貼數據模型的邏輯視圖(logical view),另外還要附上表結構描述。
7. 修改他人文檔務(wù)必使用修訂模式,以便保留備修改的內容。使用修訂模式,選擇“工具”->“修訂”->“突出顯示修訂”,勾上“編輯時(shí)標記修訂”。
附:一些模版
ü Java類(lèi)設計(class documentation)
聲明:
描述:
屬性:1. property_name
聲明
說(shuō)明
方法: 1. method_name
聲明
說(shuō)明
參數
返回值
異常
注:
方法聲明中,如果遇到重載的方法,可以使用“|”表示可以接受不同類(lèi)型的參數,例如:“String value | int value”;可以使用“[]”表示可選的參數,例如:“Object message[,Throwable t]”
Servlet設計(servlet document)
類(lèi)名 接受參數列表 描述
數據表設計(data modeling)
表名:some_table
說(shuō)明:description
表結構:
字段名 類(lèi)型 說(shuō)明
6 代碼規范
6.1 Java源代碼規范
6.1.1 命名
u Package 的命名
Package 的名字應該都是由一個(gè)小寫(xiě)單詞組成,例如:net.ebseries.modules。
此外,對于包名我們做如下約定:
1. 工具函數類(lèi)包名前綴為.util
2. Servlet類(lèi)包名前綴為.servlet
3. test case類(lèi)包名前綴為.test
Class 的命名
Class 的名字必須由大寫(xiě)字母開(kāi)頭而其他字母都小寫(xiě)的單詞組成,例如:DataFile或InfoParser。
Class 變量的命名
變量的名字必須用一個(gè)小寫(xiě)字母開(kāi)頭。后面的單詞用大寫(xiě)字母開(kāi)頭,例如:debug 或 inputFileSize。
Static Final 變量的命名
Static Final 變量的名字應該都大寫(xiě),并且指出完整含義,例如:MAX_UPLOAD_FILE_SIZE=1024。
參數的命名
參數的名字必須和變量的命名規范一致。
數組的命名
數組應該總是用下面的方式來(lái)命名:
byte[] buffer;
而不是:
byte buffer[];
方法的參數
使用有意義的參數命名,如果可能的話(huà),使用和要賦值的字段一樣的名字:
SetCounter(int size)
{
this.size = size;
}
6.1.2 代碼格式
文件頭聲明
源文件的頭部需要一個(gè)history段,對于每次對源文件的重大改動(dòng),都需要在history段中注明。該段定義在package和 import之間,例如:
?。?****************************************************
* HISTORY
*
* 2002/01/29 Biz 創(chuàng )建文件
*
* 2002/02/19 kevin 增加新功能
*
*******************************************************/
import順序
import包按一下順序:
1. jdk標準包
2. java擴展包(例如servlet,javamail,jce等)
3. 使用的外部庫的包(例如xml parser)
4. 使用的項目的公共包
5. 使用的模塊的其他包
每一類(lèi)import后面加一個(gè)換行。
例如:
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.mail.*;
import org.apache.xml.*;
import net.ebseries.*;
import net.ebseries.util.*;
import net.ebseries.ebwebmail.*;
代碼塊書(shū)寫(xiě)格式
可以選擇以下任意一種代碼塊的書(shū)寫(xiě)方式:
if (true){
//body
}
if (true)
{
//body
}
建議使用第二種書(shū)寫(xiě)方式。如果是修改他人的代碼,必須使用代碼原來(lái)的書(shū)寫(xiě)方式。
對于代碼塊過(guò)長(cháng),超過(guò)1屏以上,}后面要說(shuō)明屬于那個(gè)代碼塊,例如:
if (i > 100)
{
//too many lines more than one screen
}// if (i > 100)
關(guān)于縮進(jìn)
縮進(jìn)使用4個(gè)連續空格,不要在源文件中保存tab字符, 請注意調整所用的IDE工具,打開(kāi)將tab轉換為空格功能。
頁(yè)寬
頁(yè)寬應該設置為80字符. 源代碼一般不會(huì )超過(guò)這個(gè)寬度, 并導致無(wú)法完整顯示, 但這一設置也可以靈活調整. 在任何情況下, 超長(cháng)的語(yǔ)句應該在一個(gè)逗號或者一個(gè)操作符后折行. 一條語(yǔ)句折行后, 應該比原來(lái)的語(yǔ)句再縮進(jìn)4個(gè)空格。
操作符
操作符左右各用一個(gè)空格分隔。
例如:
int a = b;
if (a > 0);
SQL語(yǔ)句
代碼中書(shū)寫(xiě)的sql語(yǔ)句要求sql關(guān)鍵字全部大寫(xiě),表名和字段名小寫(xiě)。例如:
SELECT user_id, name FROM account WHERE user_id > ? AND depart = ? ORDER BY name
類(lèi)和方法定義
類(lèi)定義或方法定義過(guò)長(cháng)需要換行書(shū)寫(xiě),例如:
public class CounterSet
extends Observable
implements Cloneable
private PortletSet getPortlets( Portlets portlets,
RunData rundata,
boolean application,
boolean applicationsOnly )
{
}
6.1.3 注釋
public 和 protected的成員變量和方法必須寫(xiě)javadoc注釋。超過(guò)1句以上的注釋使用中文書(shū)寫(xiě)。對于代碼多于10行的private方法也要寫(xiě)javadoc注釋。
對于代碼中的邏輯分支或循環(huán)條件需要書(shū)寫(xiě)注釋?zhuān)纾?br>
if (some condition)
{
//符合某個(gè)條件,應該這樣處理
}
else
{
//否則應該那樣處理
}
6.1.4 其他
關(guān)于屬性
類(lèi)中的屬性不能定義為public變量直接存取,而是定義成protect變量并編寫(xiě)get/set方法,例如:
protect String myName;
public String getMyName()
{
return myName;
}
public void setMyName(String myName)
{
this.myName=myName;
}
6.2 jsp/html代碼規范
jsp/html描述注釋
jsp/html頁(yè)面頂部必須存在一個(gè)基本描述注釋?zhuān)δ苊枋?、參數列表和歷史修改信息,例如:
<%--
/**************************************************
*
* NAME : file_download.jsp
*
* PURPOSE : 下載文件提示
*
* PARAMETERS :
* file_id - 文件ID號
* force ?C 是否強制下載
*
* HISTORY
*
* 2002/04/05 Hafele 創(chuàng )建文件
*
* 2002/06/07 tmp 增加強制下在功能
*
*************************************************/
--%>
jsp頭格式
jsp頭部一般需要遵循以下格式:
<%@ page contentType="text/html;charset=gb2312" %>
<%@ page import="java.io.*" %> // jdk標準包
<%@ page import="javax.mail.*" %> // java擴展包
<%@ page import="org.apache.xml.*" %> //使用的外部庫的包
<%@ page import="com.sunrise..*" %> //使用的項目的公共包
<%@ page import=" com.sunrise.applications.*" %> //使用的模塊的其他包
<%@ include file="some.jsp" %> //include其他的jsp
<%
response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setHeader("Expires","0");
%> //一般jsp都需要防止緩存
html格式
1. html頭一般需要遵循以下格式:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>some title</title>
<link rel="stylesheet" href="some.css" type="text/css">
<script language="javascript">
//some javascript
</script>
</head>
注意:必須指定一個(gè)有意義的<title>,嚴禁出現“Untitled”或“未命名”之類(lèi)的<title>。
2. 所有html標簽使用小寫(xiě)
3. html頁(yè)面一般需要設置一個(gè)背景色(一般是#FFFFFF)。
html語(yǔ)法校驗
所有的jsp/html頁(yè)面需要能夠使用DreamWeaver正確打開(kāi)(即html語(yǔ)法正確,沒(méi)有錯誤的標記)。
注釋
一般不使用html注釋?zhuān)鞘怯斜匾屪罱K用戶(hù)看到的內容。對于包含JSP代碼的html塊,必須使用JSP注釋。對于沒(méi)有必要的注釋?zhuān)诎l(fā)行版本中必須移除。
form屬于域的maxlength
對于text類(lèi)型的輸入域,必須根據數據庫字段的長(cháng)度設置相應的maxlength,例如數據庫類(lèi)型是VARCHAR(64),那么maxlength是32(因為中文瀏覽器對于中文也認為是一個(gè)字符)。
6.3 其他規范
對于IDE的使用
目前暫不限制開(kāi)發(fā)工具的使用,但是最后提交的代碼必須不依賴(lài)任何IDE,而需要可以使用ant完成所有的編譯工作。一般提交的代碼目錄格式如下:
|_dist(存放輸出的文件class文件)
|_lib(使用的庫)
|_src(源代碼)
|_docs(文檔)
|_wwwroot(頁(yè)面文件)
|_build.xml(ant的build文件)
|_changes.log(代碼版本和修改的日志)
限制session的使用
在代碼中使用session需要聽(tīng)取項目經(jīng)理的意見(jiàn),項目經(jīng)理需要在設計文檔中登記項目中所有使用到的session的名字和作用。
限制外部包的使用
開(kāi)發(fā)員如果需要使用一個(gè)外部包需要聽(tīng)取項目經(jīng)理的意見(jiàn)。在項目經(jīng)理批準以前,嚴禁擅自使用一個(gè)外部的包。
1 前言
為了使軟件開(kāi)發(fā)過(guò)程有章可循,保證軟件質(zhì)量,加強開(kāi)發(fā)管理。
2 開(kāi)發(fā)管理
項目進(jìn)度周報表格如下:
項目編號:
匯報人:
匯報日期:
項目進(jìn)度詳細描述:
其他問(wèn)題:
3 項目周期
司項目開(kāi)發(fā)周期分為以下幾個(gè)步驟:
步驟 說(shuō)明 參與角色 生成文檔或程序(打*號為可選)
可行性分析 對項目的技術(shù),功能需求和市場(chǎng)進(jìn)行調研和初步分析,確定是否需要立項開(kāi)發(fā)。 部門(mén)主管核心技術(shù)員 可行性分析報告*技術(shù)調研報告* 立項 正式立項,由部門(mén)主管指定項目經(jīng)理,項目經(jīng)理制定初步計劃。初步計劃包括設計和開(kāi)發(fā)時(shí)間的初步估算。 部門(mén)主管核心技術(shù)員 項目初步計劃 需求分析 對項目進(jìn)行詳細的需求分析,編寫(xiě)需求分析文檔。對于B/S結構軟件系統需要制作靜態(tài)演示頁(yè)面。需求分析文檔和靜態(tài)演示頁(yè)面需要通過(guò)部門(mén)主管審批才能夠進(jìn)行到下一個(gè)步驟 項目經(jīng)理項目核心小組 需求分析文檔靜態(tài)演示頁(yè)面項目計劃修訂版本詳細設計 根據需求分析對項目進(jìn)行詳細設計。詳細設計以后,項目經(jīng)理同部門(mén)主管一起指定項目小組開(kāi)發(fā)成員。 項目經(jīng)理項目核心小組 詳細設計文檔項目計劃確定版本開(kāi)發(fā) 根據設計開(kāi)發(fā)項目,由美工對操作界面進(jìn)行美化。 項目經(jīng)理項目開(kāi)發(fā)員美工 項目計劃修訂版本*測試 項目經(jīng)理提交測試申請,由測試部門(mén)對項目進(jìn)行測試。項目小組配合測試部門(mén)修改軟件中的錯誤。 項目經(jīng)理項目開(kāi)發(fā)員測試部 測試申請測試計劃測試報告 項目驗收 項目驗收歸檔 部門(mén)主管項目經(jīng)理 項目所有文檔和程序
4 命名規范
4.1 項目編號命名規范
待完善
4.2 文檔命名規范
待完善
4.3 jsp/html命名規范
jsp與html文件名全部小寫(xiě),并遵循如下的規范:
數據/內容顯示頁(yè)
名詞,多個(gè)單詞用下劃線(xiàn)分隔,要求能說(shuō)明顯示內容的信息,為避免沖突,可加上 “_list”。例如:
new_message.html 或 my_file_list.jsp
操作處理頁(yè)
命名格式:名詞_下劃線(xiàn)_動(dòng)詞,例如:file_delete.jsp。
含frame頁(yè)面
<frameset>中<frame>的name屬性命名的格式是①xxx._②xxx_③xxx
?、賦xx部分用來(lái)標識當前頁(yè)面隸屬于整個(gè)系統中的哪一功能模塊。
如:屬于ebwebmail則被表示為ebwebmail,其它情況依次類(lèi)推。
?、趚xx部分標識當前頁(yè)面所要完成的功能。
如:完成用戶(hù)登錄的功能則被標識為login,其它情況依次類(lèi)推。
?、踴xx部分用來(lái)用來(lái)表示頁(yè)面在瀏覽器窗口所處的位置。
處于瀏覽器窗口的頂部則標識為top,其它情況依次類(lèi)推。
例如:ebwebmail_inbox_top.jsp
<frame> src屬性相應的文件名根據情況建議在原命名規范上用下劃線(xiàn)加上所處窗口的位置。
javascript腳本方法
腳本函數都以①xxx_②xxx的方式命名。
?、賦xx對應頁(yè)面隸屬的模塊。
?、趚xx表示函數所要實(shí)現的功能(動(dòng)賓結構),多個(gè)單詞用下劃線(xiàn)連接。
例如:ebwebmail_send_mail()
模塊通用的腳本函數必須集合于一個(gè)js文件中,在頁(yè)面上通過(guò)<script language=”javascript” src=”url”></script>形式導入。js文件名命名使用模塊名,例如:ebwebmail.js。
如果項目已經(jīng)提供了公共js腳本,則優(yōu)先使用公共js腳本中提供的函數。
所有定義方法的<script>元素定義在<head></head>中或</body>后。
javascript腳本內部變量與參數
單詞之間用下劃線(xiàn)分隔且全部小寫(xiě),例如: var file_size。
<form>表單name屬性
統一以“form_”開(kāi)頭,其后加該表單所需收集的信息的作用或動(dòng)作,例如:form_file_upload 或 form_send_mail。
表單elements
表單element的名稱(chēng)以element需收集的信息標示命名,單詞之間使用下劃線(xiàn)分隔且全部小寫(xiě),例如:
<input type=”text” name=”username”>
<input type=”radio” name=”file_type”>
<textarea name=”content” rows=”5” cols=”40”>
cookie命名
命名格式:模塊名_存儲信息名詞(多個(gè)單詞用下劃線(xiàn)分隔) ,全部大寫(xiě),例如:EBWEBMAIL_SORT_TYPE。
window.open中name參數的命名
javascript的window.open方法中有一個(gè)name的參數,瀏覽器約定同樣的名字的窗口只能打開(kāi)一個(gè),如果程序間名字重復將相互沖突。如果不限制打開(kāi)窗口數,可以指定‘’或“”(不是null),否則需要加上模塊名,例如ebwebmail_viewmail。
4.4 數據庫命名規范
數據庫表命名均遵循以下規范:
模塊名_存儲信息名詞(多個(gè)單詞用下劃線(xiàn)分隔),全部小寫(xiě),例如:ebwebmail_message。
數據庫字段命名遵循以下規范:
存儲信息名詞(多個(gè)單詞用下劃線(xiàn)分隔),全部小寫(xiě),例如:message_id。
5 文檔規范
1. 編寫(xiě)文檔目前主要使用的工具是Word(項目計劃文檔例外,需要使用Project制作),輔助使用的工具有Visio,PowerPoint,ERWin等。
2. 文檔務(wù)必保持段落格式整齊,文字字體,顏色,大小統一。
3. 如果需要摘引html頁(yè)面中的內容,不能直接從html中粘貼過(guò)來(lái)(會(huì )在word文檔中留下html格式),而必須先去除格式,例如:先粘貼到notepad中。
4. 務(wù)必注意中英文標點(diǎn)符號,文檔正文一概使用中文標點(diǎn)符號。
5. 如果需要在文檔中插圖,不要使用word自帶的繪圖工具??梢赃x擇使用PowerPoint或visio。使用PowerPoint,選擇“插入”->“對象”->“Microsoft PowerPoint 幻燈片”。使用visio,需要另外建立visio文檔,繪制完以后粘貼到word中。
6. 數據建模使用ERwin工具,文檔中僅需要粘貼數據模型的邏輯視圖(logical view),另外還要附上表結構描述。
7. 修改他人文檔務(wù)必使用修訂模式,以便保留備修改的內容。使用修訂模式,選擇“工具”->“修訂”->“突出顯示修訂”,勾上“編輯時(shí)標記修訂”。
附:一些模版
ü Java類(lèi)設計(class documentation)
聲明:
描述:
屬性:1. property_name
聲明
說(shuō)明
方法: 1. method_name
聲明
說(shuō)明
參數
返回值
異常
注:
方法聲明中,如果遇到重載的方法,可以使用“|”表示可以接受不同類(lèi)型的參數,例如:“String value | int value”;可以使用“[]”表示可選的參數,例如:“Object message[,Throwable t]”
Servlet設計(servlet document)
類(lèi)名 接受參數列表 描述
數據表設計(data modeling)
表名:some_table
說(shuō)明:description
表結構:
字段名 類(lèi)型 說(shuō)明
6 代碼規范
6.1 Java源代碼規范
6.1.1 命名
u Package 的命名
Package 的名字應該都是由一個(gè)小寫(xiě)單詞組成,例如:net.ebseries.modules。
此外,對于包名我們做如下約定:
1. 工具函數類(lèi)包名前綴為.util
2. Servlet類(lèi)包名前綴為.servlet
3. test case類(lèi)包名前綴為.test
Class 的命名
Class 的名字必須由大寫(xiě)字母開(kāi)頭而其他字母都小寫(xiě)的單詞組成,例如:DataFile或InfoParser。
Class 變量的命名
變量的名字必須用一個(gè)小寫(xiě)字母開(kāi)頭。后面的單詞用大寫(xiě)字母開(kāi)頭,例如:debug 或 inputFileSize。
Static Final 變量的命名
Static Final 變量的名字應該都大寫(xiě),并且指出完整含義,例如:MAX_UPLOAD_FILE_SIZE=1024。
參數的命名
參數的名字必須和變量的命名規范一致。
數組的命名
數組應該總是用下面的方式來(lái)命名:
byte[] buffer;
而不是:
byte buffer[];
方法的參數
使用有意義的參數命名,如果可能的話(huà),使用和要賦值的字段一樣的名字:
SetCounter(int size)
{
this.size = size;
}
6.1.2 代碼格式
文件頭聲明
源文件的頭部需要一個(gè)history段,對于每次對源文件的重大改動(dòng),都需要在history段中注明。該段定義在package和 import之間,例如:
?。?****************************************************
* HISTORY
*
* 2002/01/29 Biz 創(chuàng )建文件
*
* 2002/02/19 kevin 增加新功能
*
*******************************************************/
import順序
import包按一下順序:
1. jdk標準包
2. java擴展包(例如servlet,javamail,jce等)
3. 使用的外部庫的包(例如xml parser)
4. 使用的項目的公共包
5. 使用的模塊的其他包
每一類(lèi)import后面加一個(gè)換行。
例如:
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.mail.*;
import org.apache.xml.*;
import net.ebseries.*;
import net.ebseries.util.*;
import net.ebseries.ebwebmail.*;
代碼塊書(shū)寫(xiě)格式
可以選擇以下任意一種代碼塊的書(shū)寫(xiě)方式:
if (true){
//body
}
if (true)
{
//body
}
建議使用第二種書(shū)寫(xiě)方式。如果是修改他人的代碼,必須使用代碼原來(lái)的書(shū)寫(xiě)方式。
對于代碼塊過(guò)長(cháng),超過(guò)1屏以上,}后面要說(shuō)明屬于那個(gè)代碼塊,例如:
if (i > 100)
{
//too many lines more than one screen
}// if (i > 100)
關(guān)于縮進(jìn)
縮進(jìn)使用4個(gè)連續空格,不要在源文件中保存tab字符, 請注意調整所用的IDE工具,打開(kāi)將tab轉換為空格功能。
頁(yè)寬
頁(yè)寬應該設置為80字符. 源代碼一般不會(huì )超過(guò)這個(gè)寬度, 并導致無(wú)法完整顯示, 但這一設置也可以靈活調整. 在任何情況下, 超長(cháng)的語(yǔ)句應該在一個(gè)逗號或者一個(gè)操作符后折行. 一條語(yǔ)句折行后, 應該比原來(lái)的語(yǔ)句再縮進(jìn)4個(gè)空格。
操作符
操作符左右各用一個(gè)空格分隔。
例如:
int a = b;
if (a > 0);
SQL語(yǔ)句
代碼中書(shū)寫(xiě)的sql語(yǔ)句要求sql關(guān)鍵字全部大寫(xiě),表名和字段名小寫(xiě)。例如:
SELECT user_id, name FROM account WHERE user_id > ? AND depart = ? ORDER BY name
類(lèi)和方法定義
類(lèi)定義或方法定義過(guò)長(cháng)需要換行書(shū)寫(xiě),例如:
public class CounterSet
extends Observable
implements Cloneable
private PortletSet getPortlets( Portlets portlets,
RunData rundata,
boolean application,
boolean applicationsOnly )
{
}
6.1.3 注釋
public 和 protected的成員變量和方法必須寫(xiě)javadoc注釋。超過(guò)1句以上的注釋使用中文書(shū)寫(xiě)。對于代碼多于10行的private方法也要寫(xiě)javadoc注釋。
對于代碼中的邏輯分支或循環(huán)條件需要書(shū)寫(xiě)注釋?zhuān)纾?br>
if (some condition)
{
//符合某個(gè)條件,應該這樣處理
}
else
{
//否則應該那樣處理
}
6.1.4 其他
關(guān)于屬性
類(lèi)中的屬性不能定義為public變量直接存取,而是定義成protect變量并編寫(xiě)get/set方法,例如:
protect String myName;
public String getMyName()
{
return myName;
}
public void setMyName(String myName)
{
this.myName=myName;
}
6.2 jsp/html代碼規范
jsp/html描述注釋
jsp/html頁(yè)面頂部必須存在一個(gè)基本描述注釋?zhuān)δ苊枋?、參數列表和歷史修改信息,例如:
<%--
/**************************************************
*
* NAME : file_download.jsp
*
* PURPOSE : 下載文件提示
*
* PARAMETERS :
* file_id - 文件ID號
* force ?C 是否強制下載
*
* HISTORY
*
* 2002/04/05 Hafele 創(chuàng )建文件
*
* 2002/06/07 tmp 增加強制下在功能
*
*************************************************/
--%>
jsp頭格式
jsp頭部一般需要遵循以下格式:
<%@ page contentType="text/html;charset=gb2312" %>
<%@ page import="java.io.*" %> // jdk標準包
<%@ page import="javax.mail.*" %> // java擴展包
<%@ page import="org.apache.xml.*" %> //使用的外部庫的包
<%@ page import="com.sunrise..*" %> //使用的項目的公共包
<%@ page import=" com.sunrise.applications.*" %> //使用的模塊的其他包
<%@ include file="some.jsp" %> //include其他的jsp
<%
response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setHeader("Expires","0");
%> //一般jsp都需要防止緩存
html格式
1. html頭一般需要遵循以下格式:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>some title</title>
<link rel="stylesheet" href="some.css" type="text/css">
<script language="javascript">
//some javascript
</script>
</head>
注意:必須指定一個(gè)有意義的<title>,嚴禁出現“Untitled”或“未命名”之類(lèi)的<title>。
2. 所有html標簽使用小寫(xiě)
3. html頁(yè)面一般需要設置一個(gè)背景色(一般是#FFFFFF)。
html語(yǔ)法校驗
所有的jsp/html頁(yè)面需要能夠使用DreamWeaver正確打開(kāi)(即html語(yǔ)法正確,沒(méi)有錯誤的標記)。
注釋
一般不使用html注釋?zhuān)鞘怯斜匾屪罱K用戶(hù)看到的內容。對于包含JSP代碼的html塊,必須使用JSP注釋。對于沒(méi)有必要的注釋?zhuān)诎l(fā)行版本中必須移除。
form屬于域的maxlength
對于text類(lèi)型的輸入域,必須根據數據庫字段的長(cháng)度設置相應的maxlength,例如數據庫類(lèi)型是VARCHAR(64),那么maxlength是32(因為中文瀏覽器對于中文也認為是一個(gè)字符)。
6.3 其他規范
對于IDE的使用
目前暫不限制開(kāi)發(fā)工具的使用,但是最后提交的代碼必須不依賴(lài)任何IDE,而需要可以使用ant完成所有的編譯工作。一般提交的代碼目錄格式如下:
|_dist(存放輸出的文件class文件)
|_lib(使用的庫)
|_src(源代碼)
|_docs(文檔)
|_wwwroot(頁(yè)面文件)
|_build.xml(ant的build文件)
|_changes.log(代碼版本和修改的日志)
限制session的使用
在代碼中使用session需要聽(tīng)取項目經(jīng)理的意見(jiàn),項目經(jīng)理需要在設計文檔中登記項目中所有使用到的session的名字和作用。
限制外部包的使用
開(kāi)發(fā)員如果需要使用一個(gè)外部包需要聽(tīng)取項目經(jīng)理的意見(jiàn)。在項目經(jīng)理批準以前,嚴禁擅自使用一個(gè)外部的包。

