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