Java程序開發(fā)規(guī)范課件_第1頁
Java程序開發(fā)規(guī)范課件_第2頁
Java程序開發(fā)規(guī)范課件_第3頁
Java程序開發(fā)規(guī)范課件_第4頁
Java程序開發(fā)規(guī)范課件_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、Java 編程規(guī)范注:本規(guī)范適用于北京工業(yè)大學教育部數(shù)字社區(qū)工程研究中心進行java開發(fā),還待進一步完善。日期操作版本作者2009-4-3起草文件V1.0趙忠誠Java程序開發(fā)規(guī)范第1章 緒論1.1 目的:本規(guī)范目的是為了使本組織能以標準、規(guī)范、統(tǒng)一的編程風格進行Java代碼的開發(fā)工作。提高程序的可讀性、可修改性和可維護性,方便團隊的交流。本規(guī)范參考了:<<Code Conventions for the JavaTM Programming Language>> <<高質(zhì)量C+編程>>1.2 范圍:本規(guī)范適用于教育部數(shù)字社區(qū)工程研究中心使用Ja

2、va開發(fā)團隊所有成員,進行產(chǎn)品開發(fā)、維護以及升級等編程操作。1.3 概要說明:在這里引用文獻1來說明代碼規(guī)范的重要性:Ø 一個軟件的生命周期中,有80%都在進行維護;Ø 很難有軟件在整個生命周期中,都是由原來的作者進行維護的;Ø 編碼規(guī)范提高了軟件的可讀性,并且?guī)椭浖こ處煾涌焖購氐椎乩斫庑碌拇a;Ø 要想把你的源代碼作為產(chǎn)品來發(fā)布,就需要保證它像你創(chuàng)作的其他作品那樣被很好地封裝,并且清理干凈了。針對我們學校環(huán)境來說,師兄師姐畢業(yè),師弟師妹入學屬于軟件工程師的不斷更新,如果我們沒有統(tǒng)一的完成的編程規(guī)范,每個人按照自己的編程風格和編程方法進行程序開發(fā),

3、在畢業(yè)之后很少有人能讀懂他的程序,對于后期的維護來說是一件非常頭疼的問題,所以我們非常有必要總結出一套適合我們自己的Java開發(fā)規(guī)范。1.4 重要說明:本規(guī)范為內(nèi)部共享資源,版權屬于教育部數(shù)字工程研究中心,如果現(xiàn)在或者以后有好的建議可以直接在該文件中進行添加和修改。第2章 代碼整體組織和風格這里所說的代碼的整體組織和風格是針對一個文件而言,一個文件應該是由被空行分隔開的代碼塊所組成,并且每個塊被特定的注釋標識出來。每個文件不應該超過2000行(包括注釋說明)。2.1 Java源文件Java源文件必須包含一下幾個部分(按照從上到下的順序說明):版權說明、包和引用語句、類/接口描述以及版本信息、類

4、方法以及變量聲明和實現(xiàn)。Ø 版權信息,所有的源文件都應該由列出了類名,日期和版權信息的C-style的注釋開始,采用如下格式作為版權信息:/* * #S.java Created on 2009-4-6 * * CopyRight (c) 2009 BJUT,BeiJing. * All right reserved. */Ø 包和引用語句, 大多數(shù)Java源文件的第一個非注釋代碼行都是包定義語句,當讓可以不寫包定義語句,但是在這里強烈建議寫上包定義語句(如果你采用eclipse等開發(fā)環(huán)境寫不寫就由不得你了,除非你在它自動生成之后將其刪掉),在之后就是引用語句,如果引用的話

5、當然沒有引用語句。做如下規(guī)定:1) 包信息和引用語句之間要與一個空行2) 引用語句之間不在同一個包中的引用也要有一個空行例如:package edu.bjut.bjwater.checkrules.action;import java.text.NumberFormat;import java.text.SimpleDateFormat;import java.util.*;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpSession;import edu.bjut.bjwater.pub.

6、*;Ø 類/接口描述以及版本信息/* * Package: src.test * Description: TODO(用一句話描述該文件做什么) * author : yan * date : 2009-4-6 * version: V1.0 * * version date author modify * - - - - * 修改之后版本 修改日期 修改者 修改內(nèi)容 */Ø 變量聲明,按照文獻1中所說,在聲明變量時,首先聲明static變量然后再聲明類成員變量,聲明順序為,首先是public的類變量,然后是protected的,接下來是包級的(沒有訪問修飾符),最后是pr

7、ivate的。例:/* something .*/public static String str = “test”;/* * Set the character set for the file. */private static Charset charset = Charset.forName("ISO-8859-15");/* something .*/public String str = “test”;/* * The character buffer reference. */private CharBuffer indexFile;變量聲明同時也要添加相應注

8、釋,注釋這個變量的功能,如果是一個較復雜的數(shù)據(jù)結構形式,將其存貯的格式也表示出來,方便理解程序同時也方便其他人的程序調(diào)用。Ø 構造函數(shù)和方法:構造函數(shù)也是方法但是它沒有返回值,本規(guī)范規(guī)定,想寫構造函數(shù)在寫其他的方法。方法也要加上注釋,說明這個方法實現(xiàn)的功能等信息,例如/* * Title : main * Description : TODO方法功能描述 * param args * author: yan 2009-4-6 * version: * * version date author modify * - - - - * 修改之后版本 修改日期 修改者 修改內(nèi)容 */方法的

9、參數(shù)以及返回類型一定要詳細填寫,參數(shù)包括參數(shù)要求的類型,以及參數(shù)的說明;返回值包括返回的類型以及返回之后的數(shù)據(jù)結構等信息。 2.2 縮進縮進使得程序看起來清晰和結構化,本規(guī)范規(guī)定采用4個空格作為縮進單位。eclipse默認的TAB縮進為4個空格,不同的IDE工具可能不太一樣,需要進行設置TAB代表的空格。但是如果程序?qū)哟慰s進過多的話使得程序易讀性差,在遇到這種情況時應將部分子功能提取出來作為單獨的方法。2.3 函數(shù)體長度前面已經(jīng)提到整個文件不應該超過2000行,而作為函數(shù)體也有相應的要求,為了方便程序閱讀和理解,函數(shù)體應該盡量控制在150行左右(只是看到有人這樣寫,具體多少合適我也不是很清楚)

10、。避免出現(xiàn)大類和大方法,對于程序的維護是相當困難的。所以我們提倡小方法以及方法的重用性操作。2.4 行寬本規(guī)范規(guī)定每一行的最長寬度為80字符,因為超過了這個寬度之后有些工具不能很好的處理,就算是能夠處理,我們也不要超過這個寬度,這也是程序可讀性的一個要求。2.5 換行換行在編程的時候是避免不了的,所以對于換行文獻1中提出了一些基本的要求。Ø 在一個“,”后面斷行Ø 在一個操作符前面換行,操作符放在新行之首(確保突出操作符)Ø 在較高級別處換行,不要在較低級別處換行Ø if表達式盡量使用8個空格換行操作,因為4個空格換行操作使得函數(shù)體不容易辨認。Ø

11、; 拆分出的新行要適當進行縮進,使得排版整齊,可讀性強。例:someMethod(longExpression1, longExpression2, longExpression3, longExpression4, longExpression5);/DON'T USE THIS INDENTATIONif (condition1 && condition2) | (condition3 && condition4) |!(condition5 && condition6) /BAD WRAPS doSomethingAboutIt()

12、; /函數(shù)體不容易辨認 /USE THIS INDENTATION INSTEADif (condition1 && condition2) | (condition3 && condition4) |!(condition5 && condition6) doSomethingAboutIt(); longName1 = longName2 * (longName3 + longName4 - longName5) + 4 * longname6; / 推薦longName1 = longName2 * (longName3 + longNam

13、e4 - longName5) + 4 * longname6; /避免這種換行2.6 空行適當空行的使用可以提高代碼的可讀性。規(guī)定如下:在下列情況下使用一個空行Ø 兩個方法之間Ø 塊注釋或者單行注釋之前Ø 一個方法的兩個邏輯段之間,邏輯上密切的地方不加空行,其他地方應該加上空行分隔/* * Here is a block comment. */if (condition) /* Handle the condition. */ .while (condition)statement1;/ 空行if (condition) statement2;elsestate

14、ment3;/ 空行statement4;2.7 空格在下列情況下使用空格:1) 關鍵字之后要留空格。象const、static、final等關鍵字之后至少要留一個空格,否則無法辨析關鍵字。象if、for、while等關鍵字之后應留一個空格再跟左括號(,以突出關鍵字。2) 函數(shù)名之后不要留空格,緊跟左括號(,以與關鍵字區(qū)別。3) “,”或者“;”后要留空格,如for (initialization; condition; update)、Function(int x, int y, int z)4) “(”向后跟緊,除了“(”前為關鍵字情況留空格外,而“)”、“;”向前跟緊,也就是在他們之前沒

15、有空格出現(xiàn);5) 所有的二元操作符號:賦值操作符、比較操作符、算術操作符、邏輯操作符、位域操作符,如“=”、“+=” “>=”、“<=”、“+”、“*”、“%”、“&&”、“|”、“<<”,“”等二元操作符的前后應當加空格。6) 所有一元操作符前后不加空格,“!”、“+”、“-”前后都不加空格7) 強制轉換后應該緊跟一個空格,如myMethod(byte) aNum, (Object) x);第3章 命名規(guī)范3.1 基本規(guī)則規(guī)范化的命名可以使程序易于閱讀和理解,不僅僅方便自己日后看程序方便同時也方便他人進行代碼的維護工作。a) 命名是采用完成的英文描述,

16、禁止使用漢語拼音和漢語進行命名。b) 盡量少用縮寫形式命名c) 命名中盡量少出現(xiàn)或者不出現(xiàn)數(shù)字,當然用2代表to,或者4代表for是可以的。d) 避免使用相似或者僅僅在大小寫上區(qū)分的名字標識符類型命名規(guī)則例子包(package)1、一個唯一包名的前綴總是全部小寫的ASCII字母并且是一個頂級域名,通常是com,edu,govnet,org2、edu.bju基本包,所有包和文件都在基本包下3、包名稱按照如下規(guī)則組成【基本包】.【項目名】.【模塊名】.【子模塊名】.edu.bjut.bjwater類(Classes)采用大小寫混合的方式,每個單詞的首字母大寫,所命名稱要能反映出類的功能class

17、Raster;class ImageSprite;接口(Interfaces)與類命名規(guī)則一樣方法(Methods)采用大小寫混合的方式,第一個單詞的首字母小寫,其后單詞的首字母大寫。第一個單詞常常采用具有具有動作色彩的動詞runFast();getBackground();變量(Variables)第一個單詞的首字母小寫,其后單詞的首字母大寫;對于不易識別類型的變量加上類型標示(Hashtable keyEleHashtable; List allStudentsList)Boolean isXXXBoolean hasXXXString strXXX實例變量Instance Variabl

18、es大小寫規(guī)則和變量名相似,除了前面需要一個下劃線String _name常量(Constants)應該全部大寫,單詞間用下劃線隔開MAX_WIDTH注意:在程序開發(fā)過程中避免出現(xiàn)莫名的數(shù)字,既然是一個常量,那就給定義為常量來操作,不要出現(xiàn)不知道是什么意思的常量,使得程序變得很神秘。第4章 表達式和基本語句第5章 注釋第6章 附錄版本信息 一、GNU 風格的版本號命名格式 :主版本號 . 子版本號 . 修正版本號 . 編譯版本號 英文對照 : Major_Version_Number.Minor_Version_Number.Revision_Number.Build_Number示例 : 1

19、.2.1, 2.0, 5.0.0 build-13124二、Windows 風格的版本號命名格式 :主版本號 . 子版本號 修正版本號 . 編譯版本號 英文對照 : Major_Version_Number.Minor_Version_NumberRevision_Number.Build_Number示例: 1.21, 2.0三、.Net Framework 風格的版本號命名格式:主版本號.子版本號.編譯版本號.修正版本號英文對照: Major_Version_Number.Minor_Version_Number.Build_Number.Revision_Number版本號由二至四個部分

20、組成:主版本號、次版本號、內(nèi)部版本號和修訂號。主版本號和次版本號是必選的;內(nèi)部版本號和修訂號是可選的,但是如果定義了修訂號部分,則內(nèi)部版本號就是必選的。所有定義的部分都必須是大于或等于 0 的整數(shù)。應根據(jù)下面的約定使用這些部分:Major :具有相同名稱但不同主版本號的程序集不可互換。例如,這適用于對產(chǎn)品的大量重寫,這些重寫使得無法實現(xiàn)向后兼容性。Minor :如果兩個程序集的名稱和主版本號相同,而次版本號不同,這指示顯著增強,但照顧到了向后兼容性。例如,這適用于產(chǎn)品的修正版或完全向后兼容的新版本。Build :內(nèi)部版本號的不同表示對相同源所作的重新編譯。這適合于更改處理器、平臺或編譯器的情況

21、。Revision :名稱、主版本號和次版本號都相同但修訂號不同的程序集應是完全可互換的。這適用于修復以前發(fā)布的程序集中的安全漏洞。程序集的只有內(nèi)部版本號或修訂號不同的后續(xù)版本被認為是先前版本的修補程序 (Hotfix) 更新。版本號管理策略一、 GNU 風格的版本號管理策略:1項目初版本時 , 版本號可以為 0.1 或 0.1.0, 也可以為 1.0 或 1.0.0, 如果你為人很低調(diào) , 我想你會選擇那個主版本號為 0 的方式 ;2當項目在進行了局部修改或 bug 修正時 , 主版本號和子版本號都不變 , 修正版本號加 1;3. 當項目在原有的基礎上增加了部分功能時 , 主版本號不變 ,

22、子版本號加 1, 修正版本號復位為 0, 因而可以被忽略掉 ;4當項目在進行了重大修改或局部修正累積較多 , 而導致項目整體發(fā)生全局變化時 , 主版本號加 1;5另外 , 編譯版本號一般是編譯器在編譯過程中自動生成的 , 我們只定義其格式 , 并不進行人為控制 .二、 Window 下的版本號管理策略:1目初版時 , 版本號為 1.0 或 1.00;2. 當項目在進行了局部修改或 bug 修正時,主版本號和子版本號都不變 , 修正版本號加 1;3. 當項目在原有的基礎上增加了部分功能時 , 主版本號不變 , 子版本號加 1, 修正版本號復位為 0, 因而可以被忽略掉 ;4. 當項目在進行了重大

23、修改或局部修正累積較多 , 而導致項目整體發(fā)生全局變化時 , 主版本號加 1;5. 另外 , 編譯版本號一般是編譯器在編譯過程中自動生成的 , 我們只定義其格式 , 并不進行人為控制 .另外 , 還可以在版本號后面加入 Alpha, Beta, Gamma, Current, RC (Release Candidate), Release, Stable 等后綴 , 在這后綴后面還可以加入 1 位數(shù)字的版本號 .對于用戶來說 , 如果某個軟件的主版本號進行了升級 , 用戶還想繼續(xù)那個軟件 , 則發(fā)行軟件的公司一般要對用戶收取升級費用 ; 而如果子版本號或修正版本號發(fā)生了升級 , 一般來說是免費

24、的 .附: alphal 內(nèi)部測試版 beta 外部測試版 demo 演示版 Enhance 增強版或者加強版 屬于正式版 Free 自由版 Full version 完全版 屬于正式版 shareware 共享版 Release 發(fā)行版 有時間限制 Upgrade 升級版 Retail 零售版 Cardware 屬共享軟件的一種,只要給作者回復一封電郵或明信片即可。(有的作者并由此提供注冊碼等),目前這種形式已不多見。 Plus 屬增強版,不過這種大部分是在程序界面及多媒體功能上增強。 Preview 預覽版 Corporation & Enterprise 企業(yè)版 Standard

25、 標準版 Mini 迷你版也叫精簡版只有最基本的功能 Premium 貴價版 Professional 專業(yè)版 Express 特別版 Deluxe 豪華版 Regged 已注冊版 CN 簡體中文版 CHT 繁體中文版 EN 英文版 Multilanguage 多語言版注釋:版此版本表示該軟件僅僅是一個初步完成品,通常只在軟件開發(fā)者內(nèi)部交流,也有很少一部分發(fā)布給專業(yè)測試人員。一般而言,該版本軟件的 bug 較多,普通用戶最好不要安裝。(beta)版該版本相對于版已有了很大的改進,消除了嚴重的錯誤,但還是存在著一些缺陷,需要經(jīng)過大規(guī)模的發(fā)布測試來進一步消除。這一版本通常由軟件公司免費發(fā) 布,用戶

26、可從相關的站點下載。通過一些專業(yè)愛好者的測試,將結果反饋給開發(fā)者,開發(fā)者們再進行有針對性的修改。該版本也不適合一般用戶安裝。版該版本已經(jīng)相當成熟了,與即將發(fā)行的正式版相差無幾,如果用戶實在等不及了,盡可以裝上一試。trial(試用版)試用版軟件在最近的幾年里頗為流行,主要是得益于互聯(lián)網(wǎng)的迅速發(fā)展。該版本軟件通常都有時間限制,過期之后用戶如果希望繼續(xù)使用,一般得交納一定的費用進行注冊或購買。有些試用版軟件還在功能上做了一定的限制。unregistered(未注冊版)未注冊版與試用版極其類似,只是未注冊版通常沒有時間限制,在功能上相對于正式版做了一定的限制,例如絕大多數(shù)網(wǎng)絡電話軟件的注冊版和未注冊

27、版,兩者 之間在通話質(zhì)量上有很大差距。還有些雖然在使用上與正式版毫無二致,但是動不動就會彈出一個惱人的消息框來提醒你注冊,如看圖軟件 acdsee 、智能陳橋漢字輸入軟件等。demo版也稱為演示版,在非正式版軟件中,該版本的知名度最大。 demo 版僅僅集成了正式版中的幾個功能,頗有點像 unregistered 。不同的是, demo 版一般不能通過升級或注冊的方法變?yōu)檎桨?。以上是軟件正式版本推出之前的幾個版本,、可以稱為測試版,大凡成熟軟件總會有多個測試版,如 windows 98 的版,前前后后將近有 10 個。這么多的測試版一方面為了最終產(chǎn)品盡可能地滿足用戶的需要,另一方面也盡量減少

28、了軟件中的 bug 。而 trial 、 unregistered 、 demo 有時統(tǒng)稱為演示版,這一類版本的廣告色彩較濃,頗有點先嘗后買的味道,對于普通用戶而言自然是可以免費嘗鮮了。正式版不同類型的軟件的正式版本通常也有區(qū)別。release該版本意味“最終釋放版”,在出了一系列的測試版之后,終歸會有一個正式版本,對于用戶而言,購買該版本的軟件絕對不會錯。該版本有時也稱為標準版。 一般情況下, release 不會以單詞形式出現(xiàn)在軟件封面上,取而代之的是符號 (r) ,如 windows nt(r) 4.0 、 ms-dos(r) 6.22 等。registered很顯然,該版本是與 unregistered 相對的注冊版。注冊版、 release 和下面所講的 standard 版一樣,都是軟件的正式版本,只是注冊版軟件的前身有很大一部分是從網(wǎng)上下載的。standard這是最常見的標準版,不論是什么軟件,標準版一定存在。標準版中包含了該軟件的基本組件及一些常用功能,可以滿足一般用戶的需求。其價格相對高一級版本而言還是“平易近人”的。deluxe顧名思義即為“豪華版”。豪華版通常是相對于標準版而言的,主要區(qū)別是多了幾項功能,價格當然會高出一大塊,不推薦一般用戶購買。此版本通常是為那些追求“完美”的專業(yè)用戶所準備的。reference該版本型號常見于百科全書中,比較有名

溫馨提示

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

評論

0/150

提交評論