某有限公司J編碼規(guī)范_第1頁
某有限公司J編碼規(guī)范_第2頁
某有限公司J編碼規(guī)范_第3頁
某有限公司J編碼規(guī)范_第4頁
某有限公司J編碼規(guī)范_第5頁
已閱讀5頁,還剩14頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、(人力資源知識)某有限公司J編碼規(guī)范20XX年XX月多年的企業(yè)咨詢豉問經(jīng)驗.經(jīng)過實戰(zhàn)驗證可以落地機行的卓越管理方案,值得您下載擁有Java編碼規(guī)范修訂歷史記錄日期版本說明作者審核人2011-7-110.0.1對Java代碼風(fēng)格、注釋、命名、聲明等規(guī)范進行描述黎建寧2011-8-50.0.2根據(jù)征詢意見對Java編碼規(guī)范進行修訂黎建寧、馮彬杰、張史沛、李思行2011-8-160.0.3對規(guī)范中出現(xiàn)模糊定義的地方進行細化描述黎建寧2011-9-130.0.4根據(jù)編碼的約定情況,對注釋、聲明部分進行了補充黎建寧、李思行2011-9-200.0.5對方法的聲明順序進行補充黎建寧、李思行壹簡介i目的本規(guī)

2、范的目的是使開發(fā)人員以標準的、規(guī)范的方式編寫代碼,養(yǎng)成良好的編碼風(fēng)格和習(xí)慣,形成公司內(nèi)部編碼約定,提高程序的可讀性,可維護性以及壹致性,同時減少項目組成員間技術(shù)溝通成本,提高團隊開發(fā)效率。2范圍1 、本文檔基于Java1.5的語法描述編碼規(guī)范。2 、本文檔從代碼風(fēng)格、注釋、命名、聲明以及異常處理等五個方面對Java編碼進行約定。3 、本規(guī)范適用于所有運用Java技術(shù)的軟件項目、產(chǎn)品。4 、本規(guī)范適用的文件類型包括但不限于Java源文件、JSP文件、XML文件、HTML文件、JS文件以及AS文件。5 、本規(guī)范建議采用統(tǒng)壹的CodeStyle以及Formatter風(fēng)格,通過IDE進行配置。3讀者范

3、圍1 、軟件過程改進領(lǐng)導(dǎo)小組以及工作小組所有人員;2 、所有運用Java技術(shù)的軟件項目、產(chǎn)品的關(guān)聯(lián)領(lǐng)導(dǎo)、項目負責人、設(shè)計人員、開發(fā)人員以及測試人員。3 、所有涉及運用Java技術(shù)的軟件項目、產(chǎn)品的關(guān)聯(lián)人員。二代碼風(fēng)格1 縮進1 、使用空格代替Tab縮進,避免各種編輯器中見到不壹樣的代碼格式?!咀ⅲ簭娭茍?zhí)行, Eclipse 可輔助排版】2 、代碼按層級縮進,每層級縮進4個字符(對于特定格式文件,能夠按照實際進行調(diào)整,如XML文件可縮進2個字符),所有“”塊內(nèi)容均應(yīng)該進行縮進。【注:強制執(zhí)行,Eclipse可輔助排版】參考例子:2 括號1、除數(shù)組的初始化定義外,“”中的語句應(yīng)單獨作為壹行?!咀ⅲ?/p>

4、強制執(zhí)行,Eclipse可輔助排版】2、左括號“”可根據(jù)開發(fā)習(xí)慣是否換行存放,如果換行存放,必須和其前導(dǎo)語句首字符對齊,右括號“”必須作為單獨壹行存放且且和匹配行對齊(即左括號前導(dǎo)語句首字符)。【注:強制執(zhí)行,Eclipse可輔助排版】3、于項目內(nèi)部,相同類型的文件,其括號的風(fēng)格必須統(tǒng)壹。【注:強制執(zhí)行,Eclipse可輔助排版】參考例子:3 空格1 、操作符倆端必須帶有空格符。【注:強制執(zhí)行,Eclipse可輔助排版】參考例子:2、各且行元素(如函數(shù)參數(shù))間以空格符隔開,空格符放于逗號后方。參考例子:【注:強制執(zhí)行,Eclipse可輔助排版】3、無特別要求,括號“”、“”、“()”左右方盡量

5、不要增加無必要性的空格符?!咀ⅲ簭娭茍?zhí)行,Eclipse可輔助排版】參考例子:4 空行1 、同壹個編譯單元間(包定義、導(dǎo)入聲明、類)應(yīng)以空行相隔。參考例子:【注:強制執(zhí)行,Eclipse可輔助排版】2、類定義內(nèi)部各元素間(字段定義、方法)應(yīng)以空行相隔。參考例子:【注:強制執(zhí)行,Eclipse可輔助排版】3 、同壹方法內(nèi)實現(xiàn)不同的功能之間應(yīng)以空行相隔?!咀ⅲ簭娭茍?zhí)行】4 、不能無理由出現(xiàn)大片空行?!咀ⅲ簭娭茍?zhí)行】5 控制語句1、對于循環(huán)控制等元素塊,不管是否帶有body,均應(yīng)該以包含。參考例子:【注:強制執(zhí)行】6 行寬1 、每行代碼盡量控制行寬于100字以內(nèi),當超出100字時候,代碼應(yīng)當進行縮進

6、?!咀ⅲ悍菑娭茍?zhí)行,屬加分項】2 、方法的縮進應(yīng)當保證參數(shù)對齊。【注:非強制執(zhí)行,屬加分項】參考例子:3 、對于過長的SQL/HQL語句,則采用關(guān)鍵字對齊方式,具體可通過PL/SQL等工具進行代碼的格式化?!咀ⅲ悍菑娭茍?zhí)行,屬加分項,附帶sql規(guī)范壹且考核】7 類、函數(shù)1 、每個函數(shù)的代碼長度應(yīng)盡量控制于50行以內(nèi)(不包含注釋),如果函數(shù)功能過于龐大,可把獨立的功能段單獨抽取出來作為子函數(shù)?!咀ⅲ悍菑娭茍?zhí)行,屬加分項】2、每個類的代碼長度應(yīng)盡量控制于1000行以內(nèi)(不包含注釋),如果類功能過于龐大,可通過組合的方式來分解類?!咀ⅲ悍菑娭茍?zhí)行,屬加分項】三注釋1 基本原則1 、注釋目的于于增加代

7、碼清晰度,使代碼易于被其他開發(fā)人員理解?!咀ⅲ簭娭茍?zhí)行】2 、保持注釋簡潔,禁止為了注釋而注釋?!咀ⅲ簭娭茍?zhí)行】3、注釋除帶有代碼功能外,仍應(yīng)帶有描述上下文意圖,具體描述其原因。4、除變量定義等較短語句的注釋可用行尾注釋外,其他注釋當避免使用行尾注釋。5 、對描述較長的注釋,應(yīng)當使用HTML標記進行格式化,便于生成的JavaDoc易閱讀和理解?!咀ⅲ簭娭茍?zhí)行】2文件、包1 、文件、包頭部應(yīng)當帶有注釋,描述其功能、作用、作者、創(chuàng)建時間、修改歷史等信息?!咀ⅲ悍菑娭茍?zhí)行,屬加分項】參考例子:3 類、接口1 、對類、接口的注釋應(yīng)當符合JavaDoc規(guī)范?!咀ⅲ簭娭茍?zhí)行】2 、類、接口定義必須標記功能

8、、作用、作者、時間?!咀ⅲ簭娭茍?zhí)行】3、當代碼基線定義后,后續(xù)維護中新增的方法或字段于類、接口聲明頭部中應(yīng)當添加修訂記錄,注明時間、原因以及作者?!咀ⅲ悍菑娭茍?zhí)行,屬加分項】參考例子:4 方法1 、對方法的注釋應(yīng)當符合JavaDoc規(guī)范?!咀ⅲ簭娭茍?zhí)行】2 、方法定義應(yīng)帶有功能、作用、執(zhí)行條件(如果有)、參數(shù),對于復(fù)雜功能的方法,應(yīng)當帶有例子描述?!咀ⅲ汗δ?、作用、執(zhí)行條件(如果有)、參數(shù)屬強制執(zhí)行;例子描述屬非強制執(zhí)行,屬加分項】3、每個方法中含有的參數(shù)以及返回值應(yīng)當描述其類型、作用、值的范圍,對方法的影響?!咀ⅲ簭娭茍?zhí)行】4 、當方法拋出自定義的受控異常(CheckedException,

9、不含工具、框架拋【注:強制出的異常)時,必須對異常產(chǎn)生的原因進行描述,便于調(diào)用者捕捉。執(zhí)行】參考例子:5 、對規(guī)范中約定的方法,如回調(diào)方法、getter/setter方法,只要遵守其命令約定,均不需要編寫注釋?!咀ⅲ悍菑娭茍?zhí)行】參考例子:6、如果方法內(nèi)部涉及復(fù)雜的算法、關(guān)鍵步驟或難以理解的語句,應(yīng)當添加注釋標明其含義?!咀ⅲ悍菑娭茍?zhí)行,屬加分項】7、對于超過壹行注釋,必須采用“/*/”進行標注,而單行注釋可采用“/標注?!咀ⅲ簭娭茍?zhí)行】5變量1 、全局變量、靜態(tài)變量、類中的字段應(yīng)當帶有注釋?!咀ⅲ簭娭茍?zhí)行】參考例子:2 、對規(guī)范中約定的變量,如注入對象(如Service、DAO),通訊對象(如

10、RemoteObject),只要遵守其命令約定,均不需要編寫注釋?!咀ⅲ悍菑娭茍?zhí)行,屬加分項】參考例子:3、對于方法內(nèi)部產(chǎn)生的臨時變量,應(yīng)當盡量添加注釋,標明其中的作用。四命名1 基本原則1 、文件,類,函數(shù),變量,命名必須采用可準確表達其意義的英文單詞。2 、命名不能和關(guān)鍵字相同。【注:強制執(zhí)行】3、盡量避免使用出現(xiàn)誤解的詞匯。4 、不允許使用拼音命名,全部使用英文單詞或縮寫命名?!咀ⅲ簭娭茍?zhí)行】2 文件、包1 、文件名第壹字母應(yīng)大寫?!咀ⅲ簭娭茍?zhí)行】2 、文件名應(yīng)盡量描述該文件作用?!咀ⅲ悍菑娭茍?zhí)行,但采用拼音命名需扣分】3 、文件名應(yīng)使用名詞或形容詞名詞?!咀ⅲ簭娭茍?zhí)行】4 、包名壹般以

11、項目或模塊名進行命名,采用小寫?!咀ⅲ簭娭茍?zhí)行】5 、包名組成規(guī)則基本包.項目名.模塊名.子模塊名.【注:強制執(zhí)行】參考例子:6 、禁止把類直接定義于默認包下。以下行為必須禁止:【注:強制執(zhí)行】3 類、接口1 、類、接口名第壹字母應(yīng)大寫?!咀ⅲ簭娭茍?zhí)行】2 、類名應(yīng)盡量描述該類作用?!咀ⅲ簭娭茍?zhí)行】3 、類名應(yīng)使用名詞或形容詞名詞?!咀ⅲ簭娭茍?zhí)行】4、如果需要用到多個單詞表達其意義,每個單詞第壹個字母必須用大寫標識?!咀ⅲ簭娭茍?zhí)行】參考例子:5 、類名不使用下劃線。【注:強制執(zhí)行】6、如果用到某些特定名詞作為類名,應(yīng)保持該特定名詞,如“ADOHelper”【注:強制執(zhí)行】7、接口的第壹個字母應(yīng)

12、為“I”,其他命名規(guī)則和普通類名相同?!咀ⅲ簭娭茍?zhí)行】8、對于DAO類,其命名規(guī)則為:名詞+“DAO”,對于應(yīng)用服務(wù)類,其命名規(guī)則為:名詞+“Service”。【注:強制執(zhí)行】9、如果類為持久類,需要和數(shù)據(jù)庫表進行綁定的,其命名于忽略前綴以及下劃線等特殊字符的情況下,應(yīng)和數(shù)據(jù)庫表名保持壹致?!咀ⅲ簭娭茍?zhí)行】以下行為必須禁止:4 字段1 、字段名第壹字母應(yīng)小寫。【注:強制執(zhí)行】2 、字段名應(yīng)盡量描述該字段的作用?!咀ⅲ簭娭茍?zhí)行】3 、字段名應(yīng)使用名詞或形容詞名詞?!咀ⅲ簭娭茍?zhí)行】4、如果需要用到多個單詞表達其意義,除第壹個字母外,每個單詞第壹個字母必須用大寫標識。【注:強制執(zhí)行】5、如果字段所于

13、類為持久類,需要和數(shù)據(jù)庫表進行綁定的,其命名于忽略前綴以及下劃線等特殊字符的情況下,應(yīng)和數(shù)據(jù)庫字段名保持壹致?!咀ⅲ簭娭茍?zhí)行】5方法1 、方法名第壹字母應(yīng)小寫?!咀ⅲ簭娭茍?zhí)行】2 、方法名應(yīng)盡量描述該方法的作用?!咀ⅲ簭娭茍?zhí)行】3 、方法名應(yīng)使用“動詞名詞”形式命名?!咀ⅲ簭娭茍?zhí)行】4、如果需要用到多個單詞表達其意義,除第壹個單詞外,其他單詞第壹個字母必須用大寫標識?!咀ⅲ簭娭茍?zhí)行】5 、對于常用的DAO查詢方法,方法應(yīng)當表明方法出處、數(shù)據(jù)的來源以及查詢依據(jù)。如getOrderListByCustomer方法根據(jù)顧客獲取訂單列表,此方法由Order模塊提供而不是Customer模塊。【注:(1

14、)強制執(zhí)行,但條件定義為非強制執(zhí)行,即getOrderListByCustomer中的ByCustomer為非強制執(zhí)行】6 、回調(diào)方法應(yīng)使用“Callback”作為方法后綴,如非特殊回調(diào)方法,可采用“調(diào)用方法+Callback”命名規(guī)則,如login方法回調(diào),其方法命名為loginCallback。【注:強制執(zhí)行】7 、Flex各種事件,采用“on”作為方法前綴命名,如非特殊事件,可采用“on+方法名”命名規(guī)則,如createComplete事件中,其方法命名為onCreateComplete,如果存于多個相同的事件,采用“on+組件ID+方法名”命名規(guī)則?!咀ⅲ簭娭茍?zhí)行】6變量1 、變量名第

15、壹字母應(yīng)小寫。【注:強制執(zhí)行】2、變量名應(yīng)盡量描述該變量的作用。3、變量名壹般使用“形容詞名詞”或單個名詞,布爾變量應(yīng)使用含有“判斷意義的單詞名詞”,例如判斷是否已關(guān)閉的變量:booleanisClosed,禁止聲明類似aaa、bb無法定義、理解的變量?!咀ⅲ簭娭茍?zhí)行】4、如果需要用到多個單詞表達其意義,除第壹個單詞外,其他單詞第壹個字母必須用大寫標識。【注:強制執(zhí)行】5、用于for循環(huán)的局部變量可使用i等單個字母?!咀ⅲ悍菑娭茍?zhí)行】7 常量1 、常量名應(yīng)盡量描述該常量的作用?!咀ⅲ悍菑娭茍?zhí)行,但采用拼音命名需扣分】2 、常量名壹般使用“形容詞名詞”或單個名詞。【注:強制執(zhí)行】3 、如果需要用

16、到多個單詞表達其意義,單詞間應(yīng)通過“_”分割。【注:強制執(zhí)行】參考例子:8 組件變量1 、組件變量符合變量命名規(guī)則。【注:強制執(zhí)行】2 、組件變量名壹般采用組件前綴+變量名命名?!咀ⅲ簭娭茍?zhí)行,表單內(nèi)的組件變量非強制執(zhí)行】3 、壹般情況下,組件前綴可采用組件縮寫(見本章第9節(jié)Flex命名約定表)或全名表示,但對于過長的組件命名,建議采用縮寫標識。(新增的必須執(zhí)行)【注:強制執(zhí)行,因考慮其對舊項目的改動性太大,故該考核只針對新增的代碼模塊其中Flex命名約定表里的組件若需要縮寫標識,則必須是Flex命名約定表中對應(yīng)的縮寫標識】4、對于某些顯示數(shù)據(jù)庫字段的控件,其變量名應(yīng)對應(yīng)數(shù)據(jù)庫字段名?!咀?強

17、制執(zhí)行】9附Flex命名約定表組件全名組件名稱縮寫Controls類:AdvancedDataGridadgAlertalButtonbtnCheckBoxchkColorPickercrpComboBoxcmbDataGriddgDateChooserdcDateFielddfHSliderhslHorizontalListhorlstImageimgLabellblLinkButtonlnkbtnListlstNumericSteppernsOLAPDataGridodgPopUpButtonpubPopUpMenuButtonpumbProgressBarprgRadioButtonrd

18、oRadioButtonGrouprdogRichTextEditorrtxSWFLoaderswflTexttxTextAreatxaTextInputtxiTileListtltTreetreVSlidervslVideoDisplayvdpLayout類:ApplicationControlBaracbCanvascvsControlBarctbFormfmFormHeadingfmhGridgdHBoxhbHDividedBoxhdbHrulehrModuleLoadermdlPanelpnlSpacerspcTiletilTitleWindowtilwVBoxvbVDividedBo

19、xvdbVRulevrNavigators類:AccordionaodButtonBarbtnbLinkBarlkbrMenuBarmnbTabBartabTabNavigatortbnToggleButtonBartbbViewStackvskCharts類:AreaChartarecBarChartbarcBubbleChartbubcCandlestickChartcancColumnChartcolcHLOCCharthloccLegendlgdLineChartlincPieChartpiecPlotChart自定義組件ploc根據(jù)基礎(chǔ)組件進行自定義組合注意:基于約定優(yōu)于配置原則,若

20、規(guī)范中定義的命名規(guī)則和組件約定的規(guī)則存于沖突,以組件約定的規(guī)則為優(yōu)先參考例子:五聲明1 類、接口1 、可見性必須顯式聲明。【注:強制執(zhí)行】2 方法1 、可見性必須顯示聲明。【注:強制執(zhí)行】2、盡可能減少類和類之間耦合,盡量限制成員函數(shù)的可見性(不要擴大其可見范圍)?!咀ⅲ悍菑娭茍?zhí)行,屬加分項】3 、如果存于多個參數(shù),按照功能的相似性,應(yīng)放到壹齊?!咀ⅲ簭娭茍?zhí)行】4 、對于同樣可見性的方法,按照功能的相似性,應(yīng)放到壹齊。(如as中應(yīng)當將事件、回調(diào)方法、引用方法區(qū)分存放)。【注:強制執(zhí)行】5 、對于重載的方法,按參數(shù)的個數(shù),從少到多排序?!咀ⅲ簭娭茍?zhí)行】6、方法按照其屬性以及可見性,按以下順序排序:構(gòu)造方法、靜態(tài)公共方法、靜態(tài)私有方法、受保護方法、私有方法、以及繼承自O(shè)bject的方法(as代碼按照實際情況進行調(diào)整)。【注:強制執(zhí)行】7 、方法的聲明順序按照以下優(yōu)先級聲明:功能相似性-可見性-參數(shù)個數(shù)列子:publicvoidsaveUser(Useruser)publicvoidsaveUser(Useruser,LongorgId)publ

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論