- 前言
最近接手的一些項(xiàng)目,不同的人編碼風(fēng)格迥異,類里的變量、方法的定義穿插,注釋極為稀少,更有一些變量和方法的命名非常近似,例如表示播放隊(duì)列的"playQueue"和表示歌單的"playList",wtf?
這不是一個(gè)意思嗎?一些回調(diào)的時(shí)機(jī)也不能直觀的看出來(lái),通常需要debug調(diào)試多次;multi project之間值的傳遞、廣播跨進(jìn)程的發(fā)送、服務(wù)的開(kāi)啟和綁定,一句注釋都沒(méi)有,不知道過(guò)了這么久,
這些代碼的同事,還能很快看懂自己寫的東西嗎?這簡(jiǎn)直讓人抓狂啊,于是乎,寫下此篇博客,吐槽別人的同時(shí),更要引以為鑒,通過(guò)一些實(shí)際而有效的方法讓自己代碼更具可讀性.
- 代碼中行而有效的幾點(diǎn)
-
放置常量與變量的排位順序
- 第一層放置順序的規(guī)則:
常量->變量->接口->內(nèi)部類. - 第二層,各個(gè)類型內(nèi)部又區(qū)分為:
靜態(tài)static->非靜態(tài) - 第三層,最后的一個(gè)排位規(guī)則:訪問(wèn)權(quán)限
private私有->包訪問(wèn)(前無(wú)修飾符)->protected->public
- 第一層放置順序的規(guī)則:
依據(jù)這個(gè)規(guī)則,總結(jié)如下: 類中定義變量的先后順序
private static final int->String 私有常量String型
static final int->String 包與protected常訪問(wèn)權(quán)限常量
public static final int->String公共常量
private static int->String 私有靜態(tài)變量
static int->String 包與protected常訪問(wèn)權(quán)限靜態(tài)變量
public static int->String公共靜態(tài)變量
private int->Stirng;普通私有變量
protect子類訪問(wèn)權(quán)限->public int&String 普通公共變量
接口:private static ->普通接口
內(nèi)部類:private static ->普通內(nèi)部類
2.常量&變量命令規(guī)則
- 以**static fina**l修飾的常量字母全都為大寫,單詞之間用_下劃線隔開(kāi),如RESULT_CANCELED。
- 靜態(tài)變量前用小寫字母”s”表示,后接單詞的首字母大寫,如sActivity
- 除靜態(tài)變量的其它所有變量前都用小寫字母”m”表示,后接單詞的首字母大寫,如 private Window mWindow
- 一般都是用類名前加”s”或者”m”來(lái)命名一個(gè)類對(duì)象變量
3.方法命名規(guī)則
- 采用小駝峰命名法,首單詞小寫,第二個(gè)單詞首字母大寫,如getActivityToken()
- 方法名的第一個(gè)字母一般都為動(dòng)詞
- 常用的get,set來(lái)表示取得與設(shè)置;save保存
- on用以當(dāng)什么發(fā)生的時(shí)候,生命周期都是以on開(kāi)頭;
- requse**t請(qǐng)求,如請(qǐng)求權(quán)限;**add添加;enter進(jìn)入
- open開(kāi)啟對(duì)話框之類;close關(guān)閉;cancle取消;show顯示,dismiss隱藏
- start啟動(dòng)如activity;stop停止如stop service;init初始化
- 如果方法的返回值為boolean,一般命令為isMn()或者hasMn()
- 其它boolean值的返回動(dòng)詞有should,can
4.MultiProject中注明跳轉(zhuǎn)到哪里
一般地,Andorid中界面的跳轉(zhuǎn)、廣播的發(fā)送、服務(wù)的開(kāi)始和綁定,都是與Intent意圖相關(guān);Intent又分為顯示意圖和隱式意圖,顯示意圖需顯示的設(shè)置好當(dāng)前類要跳轉(zhuǎn)到哪個(gè)包名下的那個(gè)類(這種跳轉(zhuǎn)通常都不是
跨進(jìn)程的),而一些進(jìn)程間的跳轉(zhuǎn),系統(tǒng)服務(wù)的開(kāi)啟都是需要隱式跳轉(zhuǎn)的,隱式跳轉(zhuǎn)是根據(jù)要跳轉(zhuǎn)類中定義的action和跳轉(zhuǎn)到組件的action(清單文件中定義的節(jié)點(diǎn)信息)是否一致;通常你并不知道需要跳轉(zhuǎn)到哪里;
因此,有兩點(diǎn)是需要注意的:①action盡量定義得與跳轉(zhuǎn)目標(biāo)類相關(guān),且是唯一的②要求加上明確的注釋信息,跳轉(zhuǎn)到的包名、類名、用途
5.代碼中一些暫時(shí)的解決辦法需注明TODO注釋
IDE工具一般對(duì)TODO注釋功能有很好的支持,可以顯示和定位所有注釋中出現(xiàn)的TODO關(guān)鍵字;往往一些不靠譜的解決辦法或途徑都是導(dǎo)致某個(gè)bug的隱藏因素;提前注明此為臨時(shí)的解決辦法,可能導(dǎo)致什么后果,計(jì)劃后面什么時(shí)候再修,可以給后期維護(hù)和調(diào)試帶來(lái)很大的便利,這一點(diǎn)其實(shí)及其重要,因此決定單獨(dú)拿出來(lái)寫一下
- 小結(jié)
暫時(shí)想到的就是這些了,后面遇到更坑,更讓我頭疼的代碼,再來(lái)補(bǔ)充...附上找到的 常見(jiàn)控件縮寫和常用英文單詞的縮寫規(guī)范表
附錄:
表1 UI控件縮寫表
控件 | 縮寫 | 例子 |
---|---|---|
LinearLayout | ll | llFriend或者mFriendLL |
RelativeLayout | rl | rlMessage或mMessageRL |
FrameLayout | fl | flCart或mCartFL |
TableLayout | tl | tlTab或mTabTL |
Button | btn | btnHome或mHomeBtn |
ImageButton | ibtn | btnPlay或mPlayIBtn |
TextView | tv | tvName或mNameTV |
EditText | et | etName或mNameET |
ListView | lv | lvCart或mCartLV |
ImageView | iv | ivHead或mHeadIV |
GridView | gv | gvPhoto或mPhotoGV |
表2 常見(jiàn)的英文單詞縮寫:文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-438320.html
名稱 | 縮寫 |
---|---|
icon | ic (主要用在app的圖標(biāo)) |
color | cl(主要用于顏色值) |
divider | di(主要用于分隔線,不僅包括Listview中的divider,還包括普通布局中的線) |
selector | sl(主要用于某一view多種狀態(tài),不僅包括Listview中的selector,還包括按鈕的selector) |
average | avg |
background | bg(主要用于布局和子布局的背景) |
buffer | buf |
control | ctrl |
delete | del |
document | doc |
error | err |
escape | esc |
increment | inc |
infomation | info |
initial | init |
image | img |
Internationalization | I18N |
length | len |
library | lib |
message | msg |
password | pwd |
position | pos |
server | srv |
string | str |
temp | tmp |
window | wnd(win) |
注:程序中使用單詞縮寫原則:不要用縮寫,除非該縮寫是約定俗成的。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-438320.html
到了這里,關(guān)于代碼可讀性藝術(shù)在Andorid中的體現(xiàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!