JAVA代碼書(shū)寫(xiě)規(guī)范匯總詳解
一般原則
- 盡量使用完整的英文描述符
- 采用適用于相關(guān)領(lǐng)域的術(shù)語(yǔ)
- 采用大小寫(xiě)混合增強(qiáng)可讀性
- 盡量少用縮寫(xiě),但如果用了,要明智地使用,且在整個(gè)工程中統(tǒng)一
- 避免使用長(zhǎng)的名字
- 避免使用類(lèi)似的名字,或者僅僅是大小寫(xiě)不同的名字
- 避免使用下劃線(除靜態(tài)常量等)
命名的字母大小寫(xiě)問(wèn)題
- 包名: 字母全小寫(xiě) 例如: cn.coderstory.Activity.Main
- 類(lèi),接口 :首字母大寫(xiě),其他全小寫(xiě) 例如: class Container
- 方法,變量 :第二個(gè)單詞開(kāi)始首字母大寫(xiě) 例如: seedMessage
- 常量: 大寫(xiě),單詞用“_”分割 例如: final static MIN_WIDTH = 4
- 接口 :首字母大寫(xiě) ,后綴Impl 例如: class ContainerImpl
- 異常類(lèi): 首字母大寫(xiě), 后綴Exception 例如: DataNotFoundException
- 抽象類(lèi) :首字母大寫(xiě), 前綴Abstract 例如: AbstractBeanDefinition
- Test類(lèi): 首字母大寫(xiě), 后綴Test 例如: public Location newLocation()
方法的命名
- 類(lèi)中獲取值方法,一般要求被方法名使用被訪問(wèn)字段名,前面加上前綴get,如getLastUser(), getUserCount()
- 返回布爾型的判斷方法一般要求方法名使用單詞 is 做前綴,如isPersistent(),isString()?;蛘呤褂镁哂羞壿嬕饬x的單詞,例如equal 或equals
- 用于修改某些設(shè)置的方法(一般返回類(lèi)型為void):被訪問(wèn)字段名的前面加上前綴 set,如setFirstName(),setLastName(),setWarpSpeed()。
- 已辦的方法一般采用完整的英文描述說(shuō)明成員方法功能,第一個(gè)單詞盡可能采用一個(gè)生動(dòng)的動(dòng)詞,第一個(gè)字母小寫(xiě),如 openFile(), addAccount()。
- 接口 :首字母大寫(xiě) ,后綴Impl 例如: class ContainerImpl
- 異常類(lèi): 首字母大寫(xiě), 后綴Exception 例如: DataNotFoundException
- 抽象類(lèi) :首字母大寫(xiě), 前綴Abstract 例如: AbstractBeanDefinition
- Test類(lèi): 首字母大寫(xiě), 后綴Test 例如: public Location newLocation()
Java注釋約定
- 類(lèi)的整體注釋?zhuān)鹤裱璊avaDoc的規(guī)范,在每一個(gè)源文件的開(kāi)頭注明該CLASS的作用, 作簡(jiǎn)要說(shuō)明, 并寫(xiě)上源文件的作者, 編寫(xiě)日期。如果是修改別人編寫(xiě)的源文件,要在修改信息上注明修改者和修改日期。
例如:
/** * @(#):CLASSNAME.java * @description: Description of this java * @author: PROGRAMMER'S NAME YYYY/MM/DD * @version: Version No. * @modify: * @Copyright: 版權(quán)由擁有 */
- 類(lèi)中方法的注釋?zhuān)鹤裱璊avaDoc的規(guī)范,在每個(gè)方法的前部用塊注釋的方法描述此方法的作用,以及傳入,傳出參數(shù)的類(lèi)型和作用,以及需要捕獲的錯(cuò)誤。
例如:
/** * 方法的描述 * * *@param 參數(shù)的描述 *@return 返回類(lèi)型的描述 *@exception 出錯(cuò)信息的描述 */
- 行注釋?zhuān)菏褂?/…的注釋方法來(lái)注釋需要表明的內(nèi)容。并且把注釋的內(nèi)容放在需要注釋的代碼的前面一行或同一行。
- 塊注釋?zhuān)菏褂?**和*/注釋的方法來(lái)注釋需要表明的內(nèi)容。并且把注釋的內(nèi)容放在需要注釋的代碼的前面。
- 注釋哪些部分:類(lèi)的目的(即類(lèi)所完成的功能)、設(shè)置接口的目的以及應(yīng)如何被使用、成員方法注釋?zhuān)▽?duì)于設(shè)置與獲取成員方法,在成員變量已有說(shuō)明的情況下,可以不加注釋?zhuān)黄胀ǔ蓡T方法要求說(shuō)明完成什么功能,參數(shù)含義是什么?返回什么?)、普通成員方法內(nèi)部注釋?zhuān)刂平Y(jié)構(gòu)、代碼做了些什么以及為什么這樣做,處理順序等)、實(shí)參和形參的含義以及其他任何約束或前提條件、字段或?qū)傩悦枋?。而?duì)于局部變量,如無(wú)特別意義的情況下不加注釋。
JAVA文件聲明順序
類(lèi)或接口應(yīng)該按以下順序聲明(其實(shí)是加載順序的問(wèn)題):
- 包的定義
- impot類(lèi)(輸入包的順序、避免使用*)輸入包應(yīng)該按照java.*.*,javax.*.*,org.*.* ,com.*.*的順序import在import的時(shí)候不應(yīng)該使用* (例如: java.util.*)
- 類(lèi)或接口的定義
- 靜態(tài)變量定義,按public,protected,private順序
- 實(shí)例變量定義,按public,protected,private順序
- 構(gòu)造方法
- 方法定義順序按照public方法(類(lèi)自己的方法),實(shí)現(xiàn)接口的方法,重載的public法,受保護(hù)方法,包作用域方法和私有方法。建議:類(lèi)中每個(gè)方法的代碼行數(shù)不要超過(guò)100行。
- 內(nèi)部類(lèi)的定義
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
利用spring aop實(shí)現(xiàn)動(dòng)態(tài)代理
這篇文章主要為大家詳細(xì)介紹了利用spring aop實(shí)現(xiàn)動(dòng)態(tài)代理的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03Mybatis操作多數(shù)據(jù)源的實(shí)現(xiàn)
本文主要介紹了Mybatis操作多數(shù)據(jù)源,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-05-05JAVA8發(fā)送帶有Body的HTTP GET請(qǐng)求
本文主要介紹了JAVA8發(fā)送帶有Body的HTTP GET請(qǐng)求,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06Java 設(shè)計(jì)模式之責(zé)任鏈模式及異步責(zé)任鏈詳解
顧名思義,責(zé)任鏈模式(Chain of Responsibility Pattern)為請(qǐng)求創(chuàng)建了一個(gè)接收者對(duì)象的鏈。這種模式給予請(qǐng)求的類(lèi)型,對(duì)請(qǐng)求的發(fā)送者和接收者進(jìn)行解耦。這種類(lèi)型的設(shè)計(jì)模式屬于行為型模式2021-11-11Java調(diào)用wsdl接口的兩種方法(axis和wsimport)
本文主要介紹了Java調(diào)用wsdl接口的兩種方法(axis和wsimport),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03Java實(shí)現(xiàn)限定時(shí)間CountDownLatch并行場(chǎng)景
本文將結(jié)合實(shí)例代碼,介紹Java實(shí)現(xiàn)限定時(shí)間CountDownLatch并行場(chǎng)景,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-07-07maven模塊化開(kāi)發(fā)部署實(shí)現(xiàn)方案
有些用戶有定制化需求,需要添加新的模塊功能,因此需要平臺(tái)主體功能迭代的同時(shí),非主體功能和定制化功能插件化,本文給大家介紹maven模塊化開(kāi)發(fā)部署實(shí)現(xiàn)方案,感興趣的朋友一起看看吧2024-01-01java線程并發(fā)countdownlatch類(lèi)使用示例
javar的CountDownLatch是個(gè)計(jì)數(shù)器,它有一個(gè)初始數(shù),等待這個(gè)計(jì)數(shù)器的線程必須等到計(jì)數(shù)器倒數(shù)到零時(shí)才可繼續(xù)。2014-01-01