源代碼編寫規(guī)范-等保安全管理制度_第1頁
源代碼編寫規(guī)范-等保安全管理制度_第2頁
源代碼編寫規(guī)范-等保安全管理制度_第3頁
源代碼編寫規(guī)范-等保安全管理制度_第4頁
源代碼編寫規(guī)范-等保安全管理制度_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、X新區(qū)教育門戶網(wǎng)站平臺-網(wǎng)X全管理制度密級【內(nèi)部文件】X新區(qū)教育門戶網(wǎng)站平臺-源代碼編寫規(guī)范-文檔編號使用部門X教育X信息技術(shù)推廣 部編制日期X/12/26發(fā)行日期修訂及審核記錄文檔信息文檔名稱源代碼編寫規(guī)范文檔編號服務(wù)對象X教育X信息技術(shù)推廣部創(chuàng)建日期X/12/25文檔版本V1.1發(fā)行日期文檔審核審核人職務(wù)審核時間審核意見X項目負(fù)責(zé)人X/12/26修正版式修訂記錄修正章1修訂日期修訂人變更記錄全文X/12/26文檔版式目錄 TOC o 1-5 h z 概述 4 HYPERLINK l bookmark10 o Current Document 規(guī)范內(nèi)容: 5源代碼標(biāo)注規(guī)范(FORC+) :

2、5 HYPERLINK l bookmark12 o Current Document 源代碼標(biāo)注規(guī)范(FOR ASP 10 HYPERLINK l bookmark72 o Current Document 源代碼標(biāo)注規(guī)范(for Java) 15一.概述(一) 編寫目的為了健全公司軟件源代碼的管理,增加源代碼的可讀性,提高軟件開 發(fā)效率,特編寫些規(guī)范。此規(guī)范并非源代碼編寫的一個標(biāo)準(zhǔn),而是作為一 個參考,以培養(yǎng)開發(fā)人員良好的編程習(xí)慣。(二)范圍開發(fā)時源代碼的命名、注釋規(guī)范(包括 ASP C/C+, JAVA 。二.規(guī)范內(nèi)容:源代碼標(biāo)注規(guī)范(for C+ ):縮寫規(guī)則蟲縮寫后一個單詞的長度宜為

3、3-6個字母。*縮寫后應(yīng)能辨認(rèn)出原意。* 盡量使用公認(rèn)的縮寫習(xí)慣,如:Window縮寫為Win; SmartPoint縮寫為sp。命名規(guī)則使用含義鮮明、描述性的英文單詞或縮寫命名;命名由字母、數(shù)字和下劃線構(gòu)成, 一般情況下不得超過32個字符;命名建議采用組合詞的方式。變量命名規(guī)則* 一般性規(guī)則:由單詞(第一個單詞或其縮寫字母全部小寫,以后單詞首字母大寫,其余的字母小寫 )構(gòu)成名詞詞組,如:int nValue; CString strTemp; CListCtrl listUserInfo;第一個單詞(前綴)的縮寫格式原則上以匈牙利命名方式為準(zhǔn)(參見表一:匈牙利命名法),并且原則上不建 議用下

4、劃線作為單詞間的連接符:表一:匈牙利命名法前綴描述實例arrArray靜態(tài)數(shù)組arrPointbBOOL布爾值bEnabledbyunsignedchar(BYTE)8位無符號字符byWeekchChar8位字符chGradetchTCHAR如果是_UNICODE為16位字符tchNamei/nInt整形(其大小依賴于操作系統(tǒng))iRangeuUINT無符號整形(其大小依賴于操作系統(tǒng))nLengthusunsigned short無符號短整形usPortwWORD16位無符號值wParamlLONG32位有符號整形loffsetdwDWORD32位無符號整形dwVolumefFloat4字節(jié)浮點

5、數(shù)fHighdDouble8字節(jié)浮點數(shù)dAmountcyCURRENCY8字節(jié)貨幣類型cySellP*指針pDoc1PFAR *遠指針lpDocIpszLPSTR為32位字符串指針lpszNameIpcszLPCSTR32位常量字符串指針lpcszNameIpctszLPCTSTR如果_UNICOD比義,為32位常量字符串指針lpctszNamebstrBSTR帶后4字ij長度前綴的w_chart數(shù)組bstrMessagepbstrBSTR*BST啖據(jù)類型指針pbstrMsgstrStringCString類型的字符串strMessageochOLECHAROLECHA字符色ochXoszOL

6、ECHAR*OLECHA字符串類型oszXvarVARIANTVARIAN檄據(jù)類型varpvarVARIANT*VARIAN檄據(jù)類型指針pvarsaSAFEARRAYSAFEARRAY據(jù)色sapsaSAFEARRAY*SAFEARRAY據(jù)類型指針psadlgCDialogWindows對話框dlgstcCStaticWindows靜態(tài)文本控件stcedtCeditWindows編輯框控件edtIsbCListBoxWindows列表控件lsbbtnCButtonWindows按鈕控件btnscbCScrollBarWindows滾動條控件scbspnCSpinButtonCtrlWindows

7、we微調(diào)按鈕控件spntabCTabCtrlWindows選項卡控件tabrtfCRichEditCtrlWindows曷文本編輯框控件rtfsldCSliderCtrlWindow滑塊控件sldlistClistCtrlWindows列表控件listtreCtreeCtrlWindows樹形控件tredtcCDateTimeCtrlWindows時間選取器控件dtcprgCProgressCtrlWindows進度指示器控件prgcboCComboBoxWindows組合框控件cboilsCImageListWindows圖像列表ilstlbCToolBarCtrlWindows工具條控件t

8、lbmnuCmenuWindows菜單控件mnustaCStatusBarWindows狀態(tài)條控件stawndCWndWindows 窗口wndcxXWindows X 坐標(biāo)cxcyYWindows Y 坐標(biāo)cyptCpointWindows 點陣hWndsizeCsizeWindows 尺寸sizerect/rcCrectWindows 矩形rectpenCpenWindows 畫筆penbrCbrushWindows 刷子brfntCfontWindows 字體fntcrCOLORREFWindows顏色值 RGBcrPMpTemp臨時變量PMpBuffhHandleWindows對象句柄

9、hWndlpfnCallback指向CALLBACK數(shù)的遠指針lpfnAbortit/iteriterator迭代子itvectstd:vector標(biāo)準(zhǔn)模板庫vectmapstd:map標(biāo)準(zhǔn)模板庫mapdequestd:deque標(biāo)準(zhǔn)模板庫dequeliststd:list標(biāo)準(zhǔn)模板庫listsetstd:set標(biāo)準(zhǔn)模板庫Setmultisetstd:multiset標(biāo)準(zhǔn)模板庫multisetmultimapstd:multimap標(biāo)準(zhǔn)模板庫multimap* 指針類型的變量,必須加上前綴p,如:int* pnValue;。*全局(靜態(tài))變量的命名規(guī)則同第一條的規(guī)定,并且必須加上前綴g_。*類成

10、員(靜態(tài))變量的命名規(guī)則同第一條的規(guī)定,并且必須加上前綴m_。*模塊(函數(shù)/過程)內(nèi)部的重要變量命名遵循第一條的規(guī)定?!蹦K(函數(shù)/過程)內(nèi)部的靜態(tài)變量命名遵循第一條的規(guī)定,并且加上前綴 s_。*其余變量在不損害程序易讀易懂原則的基礎(chǔ)上酌情處理。這些變量通常 是模塊內(nèi)的臨時變量,如循環(huán)控制變量、數(shù)組的下標(biāo)等,它們可用縮寫 進行簡化處理,如:int i;。常量命名規(guī)則* 宏(#6仙日 或者常量修飾符(const):大寫字母組成的名詞詞組,單詞 間用下劃線作為連接符,如:#define INVALID_CLOSE; const double INVALID_CLOSE = double(0);。*

11、 枚舉類型(enum):此時的命名規(guī)則同變量命名的一般性規(guī)則,可參考 MFC ADO?的命名方式。函數(shù)命名規(guī)則單詞構(gòu)成的動賓詞組,每個單詞首字母大寫,其余字母小寫。如: void DrawLine(void );類命名規(guī)則*類的原型,是前綴C加單詞構(gòu)成的動賓詞組,每個單詞首字母大寫,其 余字母小寫。如:class CStockPacket; class CPacket;。*類的實例變量,采用小寫首字母縮寫的方式定義,如:CStockPacket sp;。*在對類的成員變量和成員函數(shù)定義時,要加以分類,并界定相應(yīng)的存取權(quán)限(參見表二:類成員的分類描述)表二:類成員的分類描述分類描述存取權(quán)限(依實

12、際應(yīng)用而定)/ ConstructorsPublic/ AttributesPrivate/ Operations (對于 com組件是“Methods )Public/ OverridablesProtected/ ImplementationPrivate2.1.7結(jié)構(gòu)命名規(guī)則本結(jié)構(gòu)的原型采用組合詞的方式定義,并且全部采用大寫字符的形式。如:typedef struct tagStockTransDWORD dwOpen; STOCKTRANS;*結(jié)構(gòu)的實例變量,采用小寫首字母縮寫的方式定義,如:STOCKTRANS2.1.8語句構(gòu)造規(guī)則一般性的原則:簡單而直接,盡量避免出現(xiàn)難懂的技巧型代

13、碼。為追求效率而出現(xiàn)的技巧型代碼,必須加上足夠詳細(xì)的注釋。對以下的規(guī)則不做硬性規(guī)定,可酌情考慮:一個函數(shù)/過程的代碼行數(shù)控制在60行(A4打印紙可打印的行數(shù))以內(nèi) 盡量避免復(fù)雜的測試條件。避免使用過深的(3級以上)循環(huán)或條件嵌套,必要時可采用 goto語句 循環(huán)或條件中的語句塊控制在 60行以內(nèi)。利用括號使邏輯表達式或算術(shù)表達式的運算次序清晰直觀2.1,9書寫格式規(guī)則一行一條語句,賦值語句可例外,如:i = 0, j = 1, k = 2;。層次結(jié)構(gòu)清晰明顯:與T各占一行。所在的列與其前一行語句對齊;所在的列與對應(yīng)的對齊與T之間的語句相對縮進一個Tab鍵(設(shè)為4個空格字符)。注釋與相關(guān)的代碼首

14、列對齊??招泻涂崭褚唤M相關(guān)的函數(shù)/過程間以一個空行分隔;組間兩個空行。行內(nèi)注釋(/)部分與語句間以空格或Tab分隔,數(shù)量酌情。多個函數(shù)參數(shù)或測試條件間用一個空格分隔。2.1,10 注釋規(guī)則序言性注釋在模塊開始處簡要描述模塊的功能、主要算法、接口特點、重要數(shù)據(jù)等的解釋性說明。源程序(,cpp, ,h etc)文件的開始處的格式(行寬80列以內(nèi)):= / 文件名稱:OptimizeObj.cpp / / Version xxx.xx.xx / C opyright(c) 1999-2001 APEX International (ShangHai) Inc./ 創(chuàng)建人:XXX/ 創(chuàng)建日期:YYYY

15、/MM/DD描 述: / 修改人:XXX/ 修改日期:YYYY/MM/DD/修改原因:描 述:=重要函數(shù)/過程的開始處的格式(行寬80列以內(nèi)):= /類 屬: / 函數(shù)名稱:DemoFunc參 數(shù):int nParaml - 參數(shù)一/ LPCSTR lpszParam2 -參數(shù)二/ int* pnParam3 - out參數(shù)三/返回類型:BOOL/ TRUE -成功/ FALSE -失敗/功能描述:/全局變量:/調(diào)用模塊:/備 注:pnParam3需要調(diào)用者釋放內(nèi)存/ 創(chuàng)建人:XXX/ 創(chuàng)建日期:YYYY/MM/DD描 述:/ 修改人:XXX/ 修改日期:YYYY/MM/DD/修改原因:=數(shù)據(jù)

16、說明注釋函數(shù)/過程中重要的變量必須加上注釋,一行定義一個變量,注釋放在行尾。插入性注釋在程序中間與一段代碼有關(guān)的解釋性說明。對于大段的功能相關(guān)代碼的注釋從行首開始,與前面的代碼段分隔一行。對于小段(三四行以內(nèi))代碼的注釋放在語句末或下一行。2.2源代碼標(biāo)注規(guī)范(for ASP)在編寫asp程序時,主要用到 HPML javascript 、vbscript 等語言,下面將以 vbscript為例詳細(xì)說明編寫規(guī)范,javascript 語言規(guī)范請參考vbscript。編碼約定概述編碼約定是幫助您使用Microsoft Visual Basic Scripting Edition編寫代碼的一些建議

17、。編碼約定包含以下內(nèi)容:? 對象、變量和過程的命名規(guī)則? 注釋約定?文本格式和縮進指南使用一致的編碼約定的主要原因是使腳本或腳本集的結(jié)構(gòu)和編碼樣式標(biāo)準(zhǔn)化, 這樣代碼易于閱讀和理解。使用好的編碼約定可以使源代碼明白、易讀、準(zhǔn)確, 更加直觀且與其他語言約定保持一致。常數(shù)命名規(guī)則VBScript的早期版本不允許創(chuàng)建用戶自定義常數(shù)。如果要使用常數(shù),則常數(shù)以 變量的方式實現(xiàn),且全部字母大寫以和其他變量區(qū)分。常數(shù)名中的多個單詞用 下劃線(_)分隔。例如:USER_LIST_MAXNEW_LINE這種標(biāo)識常數(shù)而方法依舊可行,但您還可以選擇其他方案,用Const語句創(chuàng)建 真正的常數(shù)。這個約定使用大小寫混合的格

18、式,并以“con”作為常數(shù)名的前綴。 例如:conYourOwnConstant變量命名規(guī)則為提高易讀和一致性,請在 VBScript代碼中使用以下變量命名規(guī)則:子類型前綴示例BooleanblnblnFoundBytebytbytRasterDataDate (Time)dPMdPMStartDoubledbldblToleranceErrorerrerrOrderNumIntegerintintQuantityLonglnglngDistanceObjectobjobjCurrentSinglesngsngAverageStringstrstrFirstName變量作用域作用域聲明變量處可

19、見性過程級事件、函數(shù)或子過程。在聲明變量的過程中可見。Script 級HPML貝囿的HEAD部分,任何過程之 夕卜。在腳本的所有過程中可見。變量應(yīng)定義在盡量小的作用域中。VBScript 變量的作用域如下所示:變量作用域前綴隨著腳本代碼長度的增加,有必要快速區(qū)分變量的作用域。在類型前綴前面添 加一個單字符前綴可以實現(xiàn)這一點,而不致使變量名過長。作用域前綴示例過程級無dblVelocityScript 級s_s_blnCalcInProgress描述性變量名和過程名變量名或過程名的主體應(yīng)使用大小寫混合格式,并且盡量完整地描述其目的。另外,過程名應(yīng)以動詞開始,例如 InitNameArray 或C

20、loseDialog。對于經(jīng)常使用的或較長的名稱,推薦使用標(biāo)準(zhǔn)縮寫以使名稱保持在適當(dāng)?shù)拈L度 內(nèi)。通常多于32個字符的變量名會變得難以閱讀。使用縮寫時,應(yīng)確保在整 個腳本中保持一致。例如,在一個腳本或腳本集中隨意切換Cnt和Count將造成混亂。對象命名規(guī)則卜表列出了 VBScript中可能用到的對象命名規(guī)則(推薦):對象類型前綴示例3D面板pnlpnlGroup動畫按鈕anianiMailBox復(fù)選框CHKchkReadOnly組合框、下拉列表框cbocboEnglish命令按鈕cmdcmdExit公共對話框dlgdlgFileOpen框架frafraLanguage水平滾動條hsbhsbVo

21、lume圖像imgimgIcon標(biāo)簽lbllblHelPMessage直線linlinVertical列表框lstlstPolicyCodes旋鈕spnspnPages文本框txttxtLastName垂直滾動條vsbvsbRate滑塊sldsldScale代碼注釋約定所有過程的開始部分都應(yīng)有描述其功能的簡要注釋。這些注釋并不描述細(xì)節(jié)信 息(如何實現(xiàn)功能),這是因為細(xì)節(jié)有時要頻繁更改。這樣就可以避免不必要 的注釋維護工作以及錯誤的注釋。細(xì)節(jié)信息由代碼本身及必要的內(nèi)部注釋來描 述。當(dāng)傳遞給過程的參數(shù)的用途不明顯,或過程對參數(shù)的取值范圍有要求時,應(yīng)加 以說明。如果過程改變了函數(shù)和變量的返回值(特別

22、是通過參數(shù)引用來改變), 也應(yīng)在過程的開始部分描述該返回值。過程開始部分的注釋應(yīng)包含以下區(qū)段標(biāo)題。相關(guān)樣例,請參閱后面的“格式化 代碼”部分。區(qū)段標(biāo)題注釋內(nèi)容目的過程的功能(不是實現(xiàn)功能的方法)。假設(shè)其狀態(tài)影響此過程的外部變量、控件或其他兀素的 列表。效果過程對每個外部變量、控件或其他兀素的影響效果 的列表。輸入每個目的不明顯的參數(shù)的解釋。每個參數(shù)都應(yīng)占據(jù) 單獨一行并有其內(nèi)部注釋。返回返回值的解釋。請記住以下幾點:?每個重要的變量聲明都應(yīng)有內(nèi)部注釋,描述變量的用途。?應(yīng)清楚地命名變量、控件和過程,僅在說明復(fù)雜細(xì)節(jié)時需要內(nèi)部注釋。?應(yīng)在腳本的開始部分包含描述該腳本的概述,列舉對象、過程、運算法則

23、、 對話框和其他系統(tǒng)從屬物。有時一段描述運算法則的假碼是很有用的。格式化代碼應(yīng)盡可能多地保留屏幕空間,但仍允許用代碼格式反映邏輯結(jié)構(gòu)和嵌套。以下為 幾點提示:? 標(biāo)準(zhǔn)嵌套塊應(yīng)縮進 4個空格。? 過程的概述注釋應(yīng)縮進 1個空格。? 概述注釋后的最高層語句應(yīng)縮進 4個空格,每一層嵌套塊再縮進4個空格。在每個asp文件的開頭需要按一下規(guī)范編碼:文件名稱:OptimizeObj.aspVersion xxx.xx.xxC opyright(c) 1999-2001 APEX International (ShangHai) Inc.創(chuàng)建人:XXX創(chuàng)建日期:YYYY/MM/DD描 述: , 修改人:XX

24、X 修改日期:YYYY/MM/DD 修改原因: 描 述:下列代碼符合VBScript函數(shù)編碼規(guī)范。,函數(shù)名稱:DemoFunc參 數(shù):nParam1 - 參數(shù)lpszParam2 -參pnParam3參數(shù)三返 回:功能描述:備 注:創(chuàng)建人:XXX創(chuàng)建日期:YYYY/MM/DD描 述:修改人:XXX修改日期:YYYY/MM/DD修改原因:Function intFindUser (strUserList(), strTargetUser)Dim i Loop counter.Dim blnFound 找到目標(biāo)標(biāo)志intFindUser = -1i = 0 初始化循環(huán)計數(shù)器Do While i =

25、 Ubound(strUserList) and Not blnFoundIf strUserList(i) = strTargetUser ThenblnFound = True 將標(biāo)志設(shè)置為TrueintFindUser = i 將返回值設(shè)置成循環(huán)計數(shù)End If遞增循環(huán)計數(shù)器i = i + 1 LoopEnd Function2.3源代碼標(biāo)注規(guī)范(for Java )命名規(guī)范Package的命名Package的名字應(yīng)該都是由一個小寫單詞組成。Class的命名Class的名字必須由大寫字母開頭而其他字母都小寫的單詞組成Class變量的命名變量的名字必須用一個小寫字母開頭。后面的單詞用大寫字

26、母開頭。Static Final 變量的命名Static Final變量的名字應(yīng)該都大寫,并且指出完整含義。參數(shù)的命名參數(shù)的名字必須和變量的命名規(guī)范一致。數(shù)組的命名數(shù)組應(yīng)該總是用下面的方式來命名:byte口 buffer;而不是:byte buffer口;方法的參數(shù)使用有意義的參數(shù)命名,如果可能的話,使用和要賦值的字段一樣的名字:setCounter(int size) this.size = size;Java文件的樣式規(guī)則所有的Java(*java)文件都必須遵守如下的樣式規(guī)則版權(quán)信息版權(quán)信息必須在java文件的開頭,比如:/* Copyright ? 2000 Shanghai XXX

27、Co. Ltd.All right reserved.*/其他不需要出現(xiàn)在javadoc的信息也可以包含在這里。Package/Imports而且按照字母順 來處理。package 行要在import 行之前,import 中標(biāo)準(zhǔn)的包名要在本地的包名之前, 序排列。如果import 行中包含了同一個包中的不同子目錄,則應(yīng)該用*package .stats;import java.io.*;import java.util.Observable;import hotlava.util.Application;這里 java.io.* 使用來代替 InputStream and OutputStr

28、eam 的。Class接下來的是類的注釋,一般是用來解釋類的。/*A class representing a set of packet and byte countersIt is observable to allow it to be watched, but onlyreports changes when the current set is complete/接下來是類定義,包含了在不同的行的extends 和implementspublic class CounterSetextends Observableimplements CloneableClass Fields接下來

29、是類的成員變量:/*Packet counters */ protected int packets;public 的成員變量必須生成文檔( JavaDoc) 。 proceted、private 和package 定義的成 員變量如果名字含義明確的話,可以沒有注釋。存取方法接下來是類變量的存取的方法。它只是簡單的用來將類的變量賦值獲取值的話,可以簡單的寫 在一行上。/*Get the countersreturn an array containing the statistical data. This array has beenfreshly allocated and can be

30、modified by the caller.*/public int getPackets() return copyArray(packets, offset); public int getBytes() return copyArray(bytes, offset); public int getPackets() return packets; public void setPackets(int口 packets) this.packets = packets; 其它的方法不要寫在一行上構(gòu)造函數(shù)接下來是構(gòu)造函數(shù),它應(yīng)該用遞增的方式寫(比如:參數(shù)多的寫在后面)。訪問類型(public

31、, private 等.)和任何static, final 或synchronized 應(yīng)該 在一行中,并且方法和參數(shù)另寫一行,這樣可以使方法和參數(shù)更易讀。publicCounterSet(int size) this.size = size;clone 方法:克隆方法如果這個類是可以被克隆的,那么下一步就是 publicObject clone() try CounterSet obj = (CounterSet)super.clone();obj.packets = (int)packets.clone();obj.size = size;return obj;catch(CloneNot

32、SupportedException e) throw new InternalError(Unexpected CloneNotSUpportedException: + e.gePMessage();類方法下面開始寫類的方法:/*Set the packet counters(such as when restoring from a database)/protected finalvoid setArray(int口 r1, int r2, int口 r3, int r4)throws IllegalArgumentException/ Ensure the arrays are of

33、 equal size/if (rl.length != r2.length | rl.length != r3.length | rl.length != r4.length)throw new IllegalArgumentException(Arrays must be of the same size);System.arraycopy(r1,0, r3, 0, rl.length);System.arraycopy(r2, 0, r4, 0, rl.length);toString 方法無論如何,每一個類都應(yīng)該定義toString 方法:publicString toString()

34、 String retval = CounterSet:;for (int i = 0; i 0) i + ; /if (i0)i +;/ 正確,單獨作為一行語句永遠單獨作為一行.語句應(yīng)該縮進到與其相對應(yīng)的 那一行相對齊的位置。括號左括號和后一個字符之間不應(yīng)該出現(xiàn)空格 ,同樣,右括號和前一個字符之間也不 應(yīng)該出現(xiàn)空格.下面的例子說明括號和空格的錯誤及正確使用:CallProc( AParameter ); / 錯誤CallProc(AParameter); 正確不要在語句中使用無意義的括號 .括號只應(yīng)該為達到某種目的而出現(xiàn)在源代碼 中。下面的例子說明錯誤和正確的用法:if (I) = 42)

35、/錯誤-括號毫無意義if (I = 42) or (J = 42) /正確-的確需要括號exit()exit除了在main中可以被調(diào)用外,其他的地方不應(yīng)該調(diào)用。因為這樣做不給任 何代碼有機會來截獲退出。一個類似后臺服務(wù)地程序不應(yīng)該因為某一個庫模塊決 定了要退出就退出。異常申明的錯誤應(yīng)該拋出一個RuntimeException 或者派生的異常。頂層的main()函數(shù)應(yīng)該截獲所有的異常,并且打印(或者記錄在日志中)在屏幕上。垃圾收集JAVA使用成熟的后臺垃圾收集技術(shù)來代替引用計數(shù)。但是這樣會導(dǎo)致一個問題:你必須在使用完對象的實例以后進行清場工作。比如一個perl的程序員可能這么寫:FileOutp

36、utStream fos = new FileOutputStream(projectFile); project.save(fos, IDE Project File);除非輸出流一出作用域就關(guān)閉,非引用計數(shù)的程序語言,比如JAVA是不能自動完成變量的清場工作的。必須象下面一樣寫:FileOutputStream fos = new FileOutputStream(projectFile);project.save(fos, IDE Project File);fos.close();clone下面是一種有用的方法:implements CloneablepublicObject clon

37、e()try ThisClass obj = (ThisClass)super.clone();obj.field1 = (int)field1.clone();obj.field2 = field2;return obj; catch(CloneNotSupportedException e) throw new InternalError(Unexpected CloneNotSUpportedException: +e.gePMessage();final 類絕對不要因為性能的原因?qū)㈩惗x為final 的(除非程序的框架要求)如果一個類還沒有準(zhǔn)備好被繼承,最好在類文檔中注明,而不要將她定

38、義為final 的。這是因為沒有人可以保證會不會由于什么原因需要繼承她。問類的成員變量大部分的類成員變量應(yīng)該定義為protected的來防止繼承類使用他們。注意,要用int口 packets ,而不是int packets口,后一種永遠也不要用。public void setPackets(int口 packets) this.packets = packets; CounterSet(int size)this.size = size;byte 數(shù)組轉(zhuǎn)換至U characters為了將byte 數(shù)組轉(zhuǎn)換到characters ,你可以這么做:Hello world!.getBytes();U

39、tility類Utility類(僅僅提供方法的類)應(yīng)該被申明為抽象的來防止被繼承或被初始化。初始化下面的代碼是一種很好的初始化數(shù)組的方法:objectArguments = new Object arguments ;枚舉類型JAVA對枚舉的支持不好,但是下面的代碼是一種很有用的模板:class Colour public static final Colour BLACK = new Colour(0, 0, 0);public static final Colour RED = new Colour(0 xFF, 0, 0);public static final Colour GREEN

40、 = new Colour(0, 0 xFF, 0);public static final Colour BLUE = new Colour(0, 0, 0 xFF);public static final Colour WHITE = new Colour(0 xFF, 0 xFF, 0 xFF); 這種技術(shù)實現(xiàn)了 RED, GREEN, BLUE等可以象其他語言的枚舉類型一樣使用的常量。他們可以用=操作符來比較。但是這樣使用有一個缺陷:如果一個用戶用這樣的方法來創(chuàng)建顏色BLACK new Colour(0,0,0)那么這就是另外一個對象,=操作符就會產(chǎn)生錯誤。她的 equal()方法仍然有效。由于這個原因,這個技術(shù)的缺陷最好注明在文檔中,或者只在自己的包中使用。Swing避免使用AWT組件混合使用AWT和Swing組件如果要將AWT組件和Swing組件混合起來使用的話,請小心使用。實際上,盡量 不

溫馨提示

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

評論

0/150

提交評論