刚接触 Android 的时候,命名都是按照拼音来,所以有的时候想看懂命名的那个控件什么是什么用的,就要读一遍甚至好几遍才知道,这样的话,在代码的审查和修改过程中就会浪费不少不必要的时间。如果就是我一个人开发,一个人维护的话还好,可是如果一个项目是团队分工合作,这样让你的同事去看你的代码就更加吃力了,因为大家之间的编程方式不一样,所以,在开发过程中,命名规范统一尤为重要,最好是团队中统一好大家命名方法,这样对于日后的工作会轻松很多。
在面试的时候,审核一个程序员的编程水平的时候,命名规范也是一大标准,所以,下面我就总结下我从网上别人的经验和自己的感悟中收集总结的android命名规范,希望对大家有所帮助。
提醒:在命名规范的统一下,在加上注释,这样日后维护会高效快捷好多。
先初略介绍下当前主要的标识符命名法和英文缩写规则:(这段别人那边借鉴的)
在讲解命名规范前,先初略介绍下当前主要的标识符命名法和英文缩写规则。
**
**标识符命名法
标识符命名法最要有四种:
1 驼峰(Camel)命名法:又称小驼峰命名法,除首单词外,其余所有单词的第一个字母大写。
2 帕斯卡(pascal)命名法:又称大驼峰命名法,所有单词的第一个字母大写
3 下划线命名法:单词与单词间用下划线做间隔。
4 匈牙利命名法:广泛应用于微软编程环境中,在以 Pascal 命名法的变量前附加小写序列说明该变量的类型。 量的取名方式为: + + 范围前缀,类型前缀,限定词。
个人觉得标识符命名原则:尽可能的用最少的字符而又能完整的表达标识符的含义。
英文缩写原则:
1 较短的单词可通过去掉“元音”形成缩写
2 较长的单词可取单词的头几个字母形成缩写
3 此外还有一些约定成俗的英文单词缩写.
下面为常见的英文单词缩写:
|
名称
|
缩写
|
|
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
|
|
Internationalization
|
I18N
|
|
length
|
len
|
|
library
|
lib
|
|
message
|
msg
|
|
password-
|
pwd
|
|
position
|
pos
|
|
server
|
srv
|
|
string
|
str
|
|
temp
|
tmp
|
|
window
|
wnd(win)
|
程序中使用单词缩写原则:不要用缩写,除非该缩写是约定俗成的。
命名规范:
1 包(packages): 采用反域名命名规则,全部使用小写字母。一级包名为 com,二级包名为 xx(可以是公司或则个人的随便),三级包名根据应用进行命名,四级包名为模块名或层级名
|
包名
|
此包中包含
|
|
com.xx.应用名称缩写.activities
|
页面用到的 Activity 类 (activities 层级名用户界面层)
|
|
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 类(classes):名词,采用大驼峰命名法,尽量避免缩写,除非该缩写是众所周知的, 比如 HTML,URL,如果类名称中包含单词缩写,则单词缩写的每个字母均应大写。
|
类
|
描述
|
例如
|
|
activity 类
|
Aty 或者 Activity 为后缀标识
|
欢迎页面类 WelcomeAty.或者 WelcomeActivity
|
|
Adapter 类
|
Adp 或者 Adapte 为后缀标识
|
新闻详情适配器 NewtDetailAdp 或则直接 NewDetailAdapter
|
|
解析类
|
Hlr 为后缀标识
|
首页解析类 HomePosterHlr
|
|
公共方法类
|
Tools 或 Manager 为后缀标识
|
线程池管理类:ThreadPoolManager
日志工具类:LogTools
|
|
数据库类
|
以 DBHelper 后缀标识
|
新闻数据库:NewDBHelper
|
|
Service 类
|
以 Service 为后缀标识
|
时间服务 TimeService
|
|
BroadcastReceive 类
|
以 Broadcast 为后缀标识
|
时间通知 TimeBroadcast
|
|
ContentProvider
|
以 Provider 为后缀标识
| |
|
直接写的共享基础类
|
以 Base 开头
|
BaseActivity,BaseFragment
|
3 接口(interface):命名规则与类一样采用大驼峰命名法,多以 able 或 ible 结尾,如 interface Runna ble ;
interface Accessible 。
4 方法(methods):动词或动名词,采用小驼峰命名法例如:onCreate(),run()
|
方法
|
说明
|
|
initXX()
|
初始化相关方法,使用 init 为前缀标识,如初始化布局 initView()
|
|
isXX()
|
checkXX()方法返回值为 boolean 型的请使用 is 或 check 为前缀标识
|
|
getXX()
|
返回某个值的方法,使用 get 为前缀标识
|
|
processXX()
|
对数据进行处理的方法,尽量使用 process 为前缀标识
|
|
displayXX()
|
弹出提示框和提示信息,使用 display 为前缀标识
|
|
saveXX()
|
与保存数据相关的,使用 sav 为 e 前缀标识
|
|
resetXX()
|
对数据重组的,使用 reset 前缀标识
|
|
clearXX()
|
清除数据相关的
|
|
removeXXX()
|
清除数据相关的
|
|
drawXXX()
|
绘制数据或效果相关的,使用 draw 前缀标识
|
5 变量(variables)采用小驼峰命名法。类中控件名称必须与 xml 布局 id 保持一致。
用统一的量词通过在结尾处放置一个量词,就可创建更加统一的变量,它们更容易理解,也更容易搜索。例如,请使用 strCustomerFirst 和 strCustomerLast,而不要使用 strFirstCustomer 和 strLastCustomer。
量词列表:量词后缀说明
First 一组变量中的第一个
Last 一组变量中的最后一个
Next 一组变量中的下一个变量
Prev 一组变量中的上一个
Cur 一组变量中的当前变量
6 常量(Constants)全部大写,采用下划线命名法.例如:MIN_WIDTH
7 资源文件(图片 drawable 文件夹下):全部小写,采用下划线命名法,加前缀区分
命名模式:activity 名称_逻辑名称/common_逻辑名称
如果有多种形态如按钮等除外如 btn_xx.xml(selector)
|
名称
|
功能
|
|
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 没有被选中
|
8 资源布局文件(XML 文件(layout 布局文件)):
全部小写,采用下划线命名法
1).contentview 命名, Activity 默认布局,以去掉后缀的 Activity 类进行命名。不加后缀:
** 功能模块.xml
**
例如:main.xml、more.xml、settings.xml
或则:activity_功能模块.xml
例如:**activity_main.xml、activity_more.xml**
2).Dialog 命名:dialog_描述.xml
例如:**dlg_hint.xml**
2).PopupWindow 命名:ppw_描述.xml
例如:**ppw _info.xml**
3). 列表项命名 listitem_描述.xml
例如:**listitem_city.xml**
4).包含项:include_模块.xml
例如:**include_head.xml、include_bottom.xml**
5).adapter 的子布局:功能模块_item.xml
例如:**main_item.xml、**
9 动画文件(anim 文件夹下):全部小写,采用下划线命名法,加前缀区分。
//前面为动画的类型,后面为方向
|
动画命名例子
|
规范写法
|
备注
|
|
fade_in
|
淡入
|
|
|
fade_out
|
淡出
|
|
|
push_down_in
|
从下方推入
|
|
|
push_down_out
|
从下方推出
|
|
|
push_left
|
推像左方
|
|
|
slide_in_from_top
|
从头部滑动进入
|
|
|
zoom_enter
|
变形进入
|
|
|
slide_in
|
滑动进入
| |
|
shrink_to_middle
|
中间缩小
| |
10 资源 ID(resourcesid):大小写规范与方法名一致,采用小驼峰命名法。命名规范为“资源控件的缩写 名”+“变量名”。注意:页面控件名称应该和控件 id 名保持一致
** strings.xml,colors.xml 等中的 id 命名:**
命名模式:activity 名称_功能模块名称_逻辑名称/activity 名称_逻辑名称/common_逻辑名称
strings.xml 中,使用 activity 名称注释,将文件内容区分开来
11 layout 中的 id 命名
命名模式为:view 缩写_模块名称_view 的逻辑名称
view 的缩写详情如下:
|
控件
|
缩写
|
|
LayoutView
|
lv
|
|
RelativeView
|
rv
|
|
TextView
|
tv
|
|
Button
|
btn
|
|
ImageButton
|
imgBtn
|
|
ImageView
|
mgView 或则 iv
|
|
CheckBox
|
chk
|
|
RadioButton
|
rdoBtn
|
|
analogClock
|
anaClk
|
|
DigtalClock
|
dgtClk
|
|
DatePicker
|
dtPk
|
|
EditText
|
edtTxt
|
|
TimePicker
|
tmPk
|
|
toggleButton
|
tglBtn
|
|
ProgressBar
|
proBar
|
|
SeekBar
|
skBar
|
|
AutoCompleteTextView
|
autoTxt
|
|
ZoomControls
|
zmCtl
|
|
VideoView
|
vdoVi
|
|
WdbView
|
webVi
|
|
RantingBar
|
ratBar
|
|
Tab
|
tab
|
|
Spinner
|
spn
|
|
Chronometer
|
cmt
|
|
ScollView
|
sclVi
|
|
TextSwitch
|
txtSwt
|
|
ImageSwitch
|
imgSwt
|
|
listView
|
lVi 或则 lv
|
|
ExpandableList
|
epdLt
|
|
MapView
|
mapVi
|
12.activity 中的 view 变量命名
命名模式为:逻辑名称 +view 缩写
建议:如果 layout 文件很复杂,建议将 layout 分成多个模块,每个模块定义一个 moduleViewHolder,其成员变量包含所属 view
13.styles.xml:将 layout 中不断重现的 style 提炼出通用的 style 通用组件,放到 styles.xml 中;
14.使用 layer-list 和 selector
Android 编码规范建议(别人弄的觉得蛮有道理)
1.Java 代码中不出现中文,最多注释中可以出现中文
2.局部变量命名、静态成员变量命名
只能包含字母,单词首字母除第一个外,都为大写,其他字母都为小写
3.常量命名
只能包含字母和_,字母全部大写,单词之间用_隔开
4.图片尽量分拆成多个可重用的图片
5.服务端可以实现的,就不要放在客户端
6.引用第三方库要慎重,避免应用大容量的第三方库,导致客户端包非常大
7.处理应用全局异常和错误,将错误以邮件的形式发送给服务端
8.图片的.9 处理
9.使用静态变量方式实现界面间共享要慎重
10.Log(系统名称模块名称接口名称,详细描述)
11.单元测试(逻辑测试、界面测试)
12.不要重用父类的 handler,对应一个类的 handler 也不应该让其子类用到,否则会导致 message.what 冲突
13.activity 中在一个 View.OnClickListener 中处理所有的逻辑
14.strings.xml 中使用 %1$s 实现字符串的通配
15.如果多个 Activity 中包含共同的 UI 处理,那么可以提炼一个 CommonActivity,把通用部分叫由它来处理,其他 activity 只要继承它即可
16.使用 button+activitgroup 实现 tab 效果时,使用 Button.setSelected(true),确保按钮处于选择状态,并使 activitygroup 的当前 activity 与该 button 对应
17.如果所开发的为通用组件,为避免冲突,将 drawable/layout/menu/values 目录下的文件名增加前缀
18.数据一定要效验,例如
字符型转数字型,如果转换失败一定要有缺省值;
服务端响应数据是否有效判断
** 最后,这些都是一些个人总结和网络上看来的其他网友的建议,**
** 仅供参考,只要形成一个团体上的统一即可,简单知道他的意思就可以了。**
** 程序员养成良好的编码习惯和命名规范,对于自己和整个团队都有好处。 **
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于