以前刚开发app的时候,命名随便来,到最后如果不点开类文件,哪个类是干嘛的都不知道,严重影响了开发效率,也不利于别人看代码。之后发现了自己的问题,就去网上借鉴别人的规范,结合自己的开发经验,取其精华去其糟粕,大概就有了这么一篇文章。
1.包结构
1.1 包名
包命名主要和包结构有关。
1.1.1 按组件区分
这种区分方式,将四大组件,view,constant(常量),网络等分别放在不同的包中,简洁明了,类目找起来也比较方便,看起来整齐一些。有第三方调用的时候单独再建立一个第三方的包,例如接入支付宝,就建一个包叫com.xx.alipay;
1.1.2 按模块区分
这种自然是前缀加功能模块>>com.tuotuo.solo.updateVideo
这种的优点大概就是多人分工开发会方便一点。
个人比较倾向于第一种,包名取得简单,找起来也方面。
1.2 文件存放位置
常见的就不赘述,drawable文件夹里主要存放自定义view,如圆角按钮等。
包(packages): 采用反域名命名规则,全部使用小写字母。一级包名为com,二级包名为xx(可以是公司或则个人的随便),三级包名根据应用进行命名,四级包名为模块名或层级名(网友整理)
包名 | 此包中包含 |
com.xx.应用名称缩写.activity | 页面用到的Activity类 (activit层级名用户界面层) |
com.xx.应用名称缩写.base | 页面中每个Activity类共享的可以写成一个i额BaseActivity类 (基础共享的类) |
com.xx.应用名称缩写.adapter | 页面用到的Adapter类 (适配器的类) |
com.xx.应用名称缩写.tools | 此包中包含:公共工具方法类(tools模块名) |
com.xx.应用名称缩写.bean (或则 com.xx.应用名称缩写.unity ) | 此包中包含:元素类 |
com.xx.应用名称缩写.db | 数据库操作类 |
com.xx.应用名称缩写.view (或则 com.xx.应用名称缩写.ui ) | 自定义的View类等 |
com.xx.应用名称缩写.service | Service服务 |
com.xx.应用名称缩写.broadcast | Broadcast服务 |
2 命名
常见命名有以下三种方法:
1 驼峰命名法:又称小驼峰命名法,除首单词外,其余所有单词的第一个字母大写。
2 帕斯卡命名法:又称大驼峰命名法,所有单词的第一个字母大写
3 下划线命名法:单词与单词间用下划线做间隔。
2.1 类命名
建议延用java源码规范,即帕斯卡命名法 ,如(MainActivity)
2.2 方法以及变量
用驼峰 (void onClick(View v) ; BaseAdapter mAdapter;)
2.3 layout文件
文件用于Activity布局的时候,组件加名字:aty_splash.xml,frg_playVideo.xml;
layout作为一个共用的布局时,例如分割线,用view_加布局:view_line.xml
这样布局里面include时候找起来也方便,管理起来也简单。
2.4 控件id
控件id我用的是控件简写加下划线加带特性的标识符。
例如播放按钮btn_play
对应变量定义的时候也根据id来,如Button btn_play,使id和变量一致,方便查找和调用。
下面为常见的英文单词缩写:
名称 | 缩写 |
icon | ic (主要用在app的图标) |
color | cl(主要用于颜色值) |
divider | di(主要用于分隔线,不仅包括Listview中的divider,还包括普通布局中的线) |
selector | sl(主要用于某一view多种状态,不仅包括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 |
| |
length | len |
library | lib |
message | msg |
password- | pwd |
position | pos |
server | srv |
string | str |
temp | tmp |
window | wnd(win) |
2.5 常量
全部大写,采用下划线命名法.例如:MIN_WIDTH
2.6 资源文件(图片drawable文件夹下)
全部小写,采用下划线命名法,加前缀区分
名称 | 功能 |
btn_xx | 按钮图片使用btn_整体效果(selector) |
btn_xx_normal | 按钮图片使用btn_正常情况效果 |
btn_xx_press | 按钮图片使用btn_点击时候效果 |
bg_head | 背景图片使用bg_功能_说明 |
def_search_cell | 默认图片使用def_功能_说明 |
icon_more_help | 图标图片使用icon_功能_说明 |
seg_list_line | 具有分隔特征的图片使用seg_功能_说明 |
sel_ok | 选择图标使用sel_功能_说明 |
命名后缀:
后缀 | 说明 |
unit | 在使用xml的tilemode来配图片时,element图片使用此后缀 |
nor | 图片的状态,代表普通状态 |
hl | 图片的状态,代表高亮状态 |
press | 图片的状态,代表按下状态 |
select | 图片的状态,代表其所占的view被选中 |
unselect | 图片的状态,代表其所占的view没有被选中 |
2.7 其他
Dialog命名:dialog_描述.xml
例如:dlg_hint.xml
PopupWindow命名:ppw_描述.xml
例如:ppw _info.xml
列表项命名item_描述.xml
例如:item_city.xml
包含项:include_模块.xml
例如:include_head.xml、include_bottom.xml
adapter的子布局:adp_功能模块.xml
例如:adp_display.xml、
动画文件(anim文件夹下):全部小写,采用下划线命名法,加前缀区分。
//前面为动画的类型,后面为方向
动画命名例子 | 规范写法 | 备注 |
fade_in | 淡入 |
|
fade_out | 淡出 |
|
push_down_in | 从下方推入 |
|
push_down_out | 从下方推出 |
|
push_left | 推像左方 |
|
slide_in_from_top | 从头部滑动进入 |
|
zoom_enter | 变形进入 |
|
slide_in | 滑动进入 |
|
shrink_to_middle | 中间缩小 |
|
3 注释
创建类、有个性的变量(如标识位、链表)时,顺手加一下注释,到头来改起来比较方便,也利于代码阅读。
4 总结
个人认为规范命名的目的,首先是让各个文件各段代码功能一目了然,其次就是在调用的时候简单可行。比如说你在findviewbyid的时候,要找一个textview,那你输入tv_,结果一目了然。
权当抛砖引玉。