安卓命名规范
转摘于csdn博文http://m.blog.csdn.net/article/details?id=23542617
标识符命名法
- 驼峰(Camel)命名法:又称小驼峰命名法,除首单词外,其余所有单词的第一个字母大写。
- 帕斯卡(pascal)命名法:又称大驼峰命名法,所有单词的第一个字母大写。
- 下划线命名法:单词与单词间用下划线做间隔。
- 匈牙利命名法:广泛运用于微软编程环境中,在以Pascal命名法的变量前附加小写序列说明该变量的类型。变量的取名方式为:++范围前缀,类型前缀,限定词。
基本原则:尽可能用最少的字符而又能完整的表达标识符的含义。
英文缩写原则:
- 较短的单词可以通过去掉‘元音’形成缩写。
- 较长的单词可以取单词的头几个字母形成缩写。
- 此外还有一些约定俗成的单词缩写。
下面是一些常见的英文单词缩写:
icon——>ic
color——>cl
divider——>di
selector——>sl
average——>avg
background——>bg
buffer——>buf
control——>ctrl
delete——>del
document——>doc
error——>err
escape——>esc
increment——>inc
infomation——>info
initial——>init
image——>img
lenth——>len
library——>lib
message——>msg
password——>pwd
position——>pos
server——>srv
string——>str
temp——>tmp
window——>wnd(win)
程序中使用单词缩写原则:不要用缩写,除非该缩写是约定俗成的。
命名规范
包(packages):采用反向域名命名规则,全部使用小写字母。一级包名为域名后缀,二级包名为域名名称,三级包名应该是应用的名称,司机包名为模块名或层级名。
常见的包
com.xx.应用名.activities——>页面用到的activity类
com.xx.应用名.base——>页面中每个activity类共享的可以写成一个baseActivity类
com.xx.应用名.adapter——>页面用到的Adapter类
com.xx.应用名.tools——>公共工具方法类
com.xx.应用名.unity(bean)——>元素类
com.xx.应用名.db——>数据库操作类
com.xx.应用名.view(ui)——>自定义view类
com.xx.应用名.service——>service服务
com.xx.应用名.broadcast——>Broadcast服务
类(classes):名词,采用大驼峰命名法,尽量避免缩写,除非该缩写是众所周知的,比如HTML,URl,如果类名称中包含单词缩写,则单词缩写的每个字母均应该大写。
activity类——>Activity(Aty)为后缀标识
adapter类——>Adapter(Adp)为后缀标识
解析类——>Hlr为后缀标识
公共方法类——>Tools或Manager为后缀标识
数据库类——>DBHelper为后缀标识
service——>Service为后缀标识
broadcastReceive——>Broadcast为后缀标识
ContentProvider——>Provider为后缀标识
直接写的共享基础类——>以Base开头
接口(interface):大驼峰命名法,多以able或ible结尾。
方法(method):动词或动名词,采用小驼峰命名法。
常见的方法形式
>
- initXX()——>初始化的相关方法
- isXX()——>一般返回值为boolean型
- getXX()——>返回某个值
- processXX()——>对数据进行处理
- saveXX()——>与保存数据相关的方法
- resetXX()——>对数据重组的方法
- clearXX()——>清除相关数据
- removeXX()——>清除数据
- drawXX()——>绘制数据或者效果相关的方法
变量(variable):采用小驼峰命名法。类中控件名称必须与布局id保持一致。
常量(constant):全部大写,采用下划线命名法
资源文件(drawable文件夹下):全部小写,采用下划线命名法,加前缀区分。
命名模式:activity名称_逻辑名称/common_逻辑名称
如果有多种形态如按钮等除外:
btn_xx——>按钮图片的整体效果(selector)
btn_xx_normal——>按钮图片的正常情况
btn_xx_press——>按钮图片的点击的效果
bg_head——>背景使用db_功能_说明
def_search_cell——>默认图片使用def_功能_说明
icon_more_help——>图标图片使用icon_功能_说明
seg_list_line——>具有分隔特征的图片使用seg_功能_说明
sel_ok——>选择图标使用sel_功能_说明
资源布局文件(layout布局文件):全部小写,采用下划线命名法。
contentView命名:activity默认布局,去掉后缀的activity类进行命名。不加后缀:
功能模块.xml
如:main.xml
或则:activity_功能模块.xml
如:activity_main.xml- Dialog命名:dialog_描述.xml
- PopupWindow命名:ppw_描述.xml
- 列表项命名listitem_描述.xml
- 包含项:include_模块.xml
- adapter的子布局:功能模块_item.xml
动画文件(anim文件夹下):全部小写,采用下划线命名法,加前缀区分。
形式:动画类型_方向
动画类型:fade(淡入淡出)、push、slide、zoom、shrink等
方向:in、out、down、left、top、enter(进入)、middle等
资源ID(resourceId):大小写规范与方法名一致,采用小驼峰命名法。命名规范为“资源控件缩写名+变量名”。页面控件名称应该和空间id名保持一致
strings.xml、colors.xml等中的id命名:
命名模式:activity名称_功能模块名称_逻辑名称/activity名称_逻辑名称/common_逻辑名称
strings.xml中,使用activity名称注释,将文件内容区分开来
layout中id命名
命名模式:view缩写_模块名称_view的逻辑名称
view缩写:
LayoutView——>lv
RalativeView——>rv
TextView——>tv
Button——>btn
ImageButton——>imgBtn
ImageView——>iv
CheckBox——>chx
RadioButton——>rdoBtn
analogClock——>anaClk
DigtalClock——>dgtClk
DatePicker——>dtPk
EditText——>ediTxt
TimePicker——>tmPk
toggleButton——>tglBtn
ProgressBar——>proBar
SeekBar——>skBar
AutoCompleteTextView——>autoTxt
ZoomControls——>zmCtl
VideoView——>vdoVi
WebView——>webVi
RantingBar——>ratBar
Tab——>tab
Spinner——>spn
Chronometer——>cmt
ScollView——>sclvi
TextSwitch——>txtSwt
ImageSwitch——>imgSwt
ListView——>lv
ExpandListView——>epdLt
Mapview——>mapVi
activity中的view变量的命名
命名模式:逻辑名称+view的缩写
安卓编码建议
- java代码中不出现中文,最多注释中可以出现中文
- 局部变量命名,静态成员变量命名只能包含字母,单词首字母除第一个外,都为大写,其他字母都为小写。
- 常量命名只能包含字母和,字母全部大写,单词之间用隔开。
- 图片尽量拆分成多个可重用的图片。
- 引用第三方库要慎重,避免应用大容量的第三方库,导致客户端包非常大。
- 处理应用全局异常和错误,将错误以邮件的形式发送给服务器
- 服务器端可以实现的,就不要放在客服端。
- 图片的.9处理。
- 使用静态变量方式实现界面间的共享要慎重。
- Log(系统名称模块名称和接口名称,详细描述)。
- 单元测试(逻辑测试、界面测试)。
- 不要重用父类的handler,对应一个类的handler也不应该让其子类用到,否会导致message.what冲突。
- strings.xml中使用%1$实现字符串的通配。
- 如果多个activity中包含共同的ui处理,则可以提炼一个comminActivity,把通用部分交由它来处理,其他activity只要继承它就可以了。
- 使用button+activitygroup实现tab效果是,使用Button.setSelected(true),确保按钮处于选择状态,并使activitygroup的当前activity与该Button对应。
- 如果所开发的为通用组件,为避免冲突吗,将drawable/layout/menu/values目录下的文件名增加前缀。
- 数据一定要校验,例如,字符型转数字型,如果转换失败,一定要有缺陷值;服务器响应数据是否有效判断。