那些崩潰又可笑的代碼命名...
本文旨在用通俗的語言講述枯燥的知識
1
到一家創(chuàng)業(yè)公司上班的第一天,老員工劉XX給我看了公司他負(fù)責(zé)的項(xiàng)目,奇怪的是,命名是“LiuQXProject”,劉XX看著驚愕的我說:“怎么了?有什么錯嗎?”


2
給同事做雙十一活動相關(guān)代碼的review,學(xué)到到了很多中英混血單詞,獲取雙十一拼團(tuán)活動數(shù)據(jù)的接口叫做“get_ShuangShiYi_GroupTuan_activity_data”,特等獎的命名:TeDeng_price….更氣人的是,我們活動獎等有十級,他就虔誠地繼續(xù)OneDeng_price直到JiuDeng_price。。。
噢,no??!好氣?。。《宜€把”獎“的單詞prize寫成了price,
怎么說呢?好難受..


3
公司來了個(gè)剛畢業(yè)的小伙子,自詡前端未來之星,喜歡研讀源碼,對開源充滿熱愛,一個(gè)月后,無意間打開他寫的一個(gè)js文件,讓我驚訝的是:變量從a到z全部用完,更氣人的是,26個(gè)字母用完之后,他竟然喪心病狂的用起來了雙拼,var aa=1,var ab=“12”,var ac=null…我問他為什么這樣命名,他說你沒研讀jQuery源碼嗎?人家就是這樣做的,簡潔大氣上檔次!


4
因?yàn)槲⑿抨欠Q經(jīng)常有帶有一些亂七八糟的表情或者字符,在正常情況下utf-8編碼的數(shù)據(jù)庫是存不進(jìn)去的,因此讓同事幫忙寫個(gè)把微信昵稱轉(zhuǎn)換成正常的字符串的一個(gè)工具函數(shù),最終我拿到了這個(gè)工具函數(shù),名字叫做:convertingWechatNicknameintoNormalCharacters(String nickName)


5
實(shí)習(xí)小伙子來的頭一天就搞的滿身大汗,我說怎么了,他說我明明寫了main方法,為什么運(yùn)行不了,我一看代碼,我噻~main寫成了mian,怎么可能跑得起來?。「鼩埍┑氖牵?/p>
蘋果手機(jī)是apple_sj,Android手機(jī)是android_sj,哈哈~

以上的種種讓人哭笑不得的命名問題..相信很多小伙伴也會碰過這樣,有些是因?yàn)榻?jīng)驗(yàn)不足,有些是因?yàn)橐恢睕]有對自己寫的代碼做一些規(guī)范化的工作,有的是因?yàn)楸焕享?xiàng)目、前輩帶出來的壞習(xí)慣…這些都是編程世界里非常不好的行為,拒不完全統(tǒng)計(jì):在一個(gè)項(xiàng)目中,程序員80%的時(shí)間都是在和變量、函數(shù)、方法打交道,因此一個(gè)好的命名習(xí)慣,比注釋或一份詳細(xì)的開發(fā)文檔都重要。針對于此,小編特意根據(jù)行業(yè)標(biāo)準(zhǔn)---阿里開發(fā)文檔,做了一些參考和摘抄,整理出一份關(guān)于命名方面的規(guī)范,給需要的你作參考。
爭取多寫漂亮代碼,少寫注釋!??!
文章提綱:
整體規(guī)范
包規(guī)范
類規(guī)范
方法規(guī)范
OOP的一些強(qiáng)制規(guī)范
1. 整體規(guī)范
所有的命名必須以英文意譯,不能以中文拼音意譯,如:獲取我的消息接口,可以寫:myMessage;但不能寫:myXiaoXi
盡量用精簡的英文命名,但要完整表達(dá)其意義,杜絕int a ,int a1 int aa這種毫無意義的簡化寫法。
所有命名不能以特殊符號開始,如:_age,_username
常量用全大寫定義,單詞之間用下劃線分割語義,如:public final int REDIS_MAX_IDLE=5;
2. 包規(guī)范
包名全小寫,不能用特殊符號或者駝峰寫法如:com.courseLog.uitl_con是不合規(guī)范的。
包名要符合包的作用,比如數(shù)據(jù)層要寫dao,工具包要寫util等
3. 類規(guī)范
類名風(fēng)格為大寫開頭的駝峰命名方式,如:ApiController、TestController等
異常類命名使用Exception結(jié)尾,如:CustomerException
抽象類命名使用Abstract開頭,如:AbstractCustomer
測試類命名以它要測試的類的名稱開始,以 Test 結(jié)尾,如:CustomerControllerTest
枚舉類命名要以Enum結(jié)尾,如果CustomerRoleEnum
其它類型的類命名,在描述類作用的同時(shí),也盡可能表達(dá)出類所用的一些設(shè)計(jì)模式
4. 方法規(guī)范
方法名使用駝峰寫法,以小寫字母開頭,如:getUserCourse();
方法內(nèi)的參數(shù)名、成員變量、局部變量均使用駝峰寫法,以小寫字母開頭,如:int userName;
接口類的方法和屬性不要加上任何修飾符,保證代碼的簡介。
方法定義必須要有注釋,包括(方法作用、參數(shù)名、返回類型、創(chuàng)建時(shí)間等)
Service/DAO層方法命名規(guī)約:
1) 獲取單個(gè)對象的方法用get做前綴。
2) 獲取多個(gè)對象的方法用list做前綴。
3) 獲取統(tǒng)計(jì)值的方法用count做前綴。
4) 插入的方法用save/insert做前綴。
5) 刪除的方法用remove/delete做前綴。
6) 修改的方法用update做前綴。
5. OOP的一些強(qiáng)制規(guī)范
盡量避免使用可變參數(shù)編程,相同參數(shù)類型,相同業(yè)務(wù)含義,才可以使用 Java 的可變參數(shù),避免使用 Object
接口過時(shí)必須加@Deprecated 注解
不能使用過時(shí)的類或方法
所有的相同類型的包裝類對象之間值的比較,全部使用 equals 方法比較
類內(nèi)方法定義順序依次是:公有方法或保護(hù)方法 > 私有方法 > getter/setter 方法。
點(diǎn)擊「閱讀原文」獲取面試題大全~
