参考:
http://blog.csdn.net/vipzjyno1/article/details/23542617
http://www.jb51.net/article/38796.htm
http://www.cnblogs.com/shortboy/archive/2012/06/20/2556217.html
http://angrycode.cn/archives/669
在一个资源文件比较多的Android项目中,能否对标识符进行正确的命名关系到项目以后的可读性和可维护性,这点在团队开发中尤其重要。刚开始学习Android的时候,总是喜欢随意命名,对自己来说可能问题还不是很大,而对那些想去阅读自己代码的人会造成不小的麻烦。甚至在一个月两个月过后,连自己都不知道当初定义的资源文件代表什么意思。以下是个人认为一种比较好的命名方式:
1. layout命名方式
- ContentView(使用setContentView()) :
对于Activity:activity_功能模块.xml 或 activity_功能模块_逻辑或描述.xml。例如登录页面activity_login.xml,关于页面activity_about.xml
对于Fragment:fragment_功能模块 或 fragment_功能模块_逻辑或描述.xml。例如fragment_login.xml,fragment_main_news.xml - 列表项:
list_item_功能模块_逻辑或描述.xml。例如主页中的新闻列表页,list_item_main_news.xml;新闻收藏列表,list_item_user_favorite.xml。 - PopupWindow:
ppw_功能模块_逻辑或描述.xml。例如主页底部仿IOS弹出框,ppw_main_more_share.xml - Dialog:
dialog_功能模块.xml 或 dialog_功能模块_逻辑或描述.xml。例如通用对话框,dialog_common.xml - 包含项:
include_功能模块.xml 或 include_功能模块_逻辑或描述.xml。如果是十分通用的比如说自定义样式的titlebar 可以采用include_common_titlebar.xml
2. layout中的id命名方式
View缩写_模块名称_View的逻辑名称
常用的view缩写如下表所示:
| View | 缩写 |
|---|---|
| LinearView,LinearLayout | lv |
| RelativeView,RelativeLayout | rv |
| FrameLayout | fv |
| TextView | tv |
| WebView | wv |
| ImageView | iv |
| ImageButton | ibtn |
| Button | btn |
| CheckBox | ckb |
| RadioButton | rbtn |
| RadioGroup | rg |
| ListView | list |
| GridView | gv |
| SeekBar | sbar |
| ProgressBar | pbar |
| EditText | edt |
3. Drawable、Anim命名方式
静态:
背景:bg_模块_描述.png,这种图片一般那些比较大的图片,如作为某个activity的背景等
按扭:btn_模块_描述.png,这种图片一般用在按扭上,而且这种按扭没有其它状态,游戏开发用得比较多
图标:ic_模块_描述.png,这种图片一般用于单个图标,如九宫格上的图标,listview上的小图标等例如:
icon_main_pwd.png:登录页面密码输入框前面的icon标识,相当于label
bg_common.png:一张通用背景图动态:
sel_模块_逻辑或描述.png(也可以用bg_描述_状态1[_状态2]这种格式)例如:
sel_common_btn.xml,表示通用的按钮点击效果,这个selector使用到的两张静态图片用命名方式为:
ic_模块_逻辑或描述_normal.png
ic_模块_逻辑或描述_focused.png
ic_模块_逻辑或描述_pressed.png动画
anim_模块_逻辑或描述.xml例如:
anim_common_slide_left.xml
常用的Drawable缩写如下表所示:
| Drawable | 缩写 | 说明 |
|---|---|---|
| icon | ic | 主要用于app的图标 |
| background | bg | 布局和子布局的背景 |
| selector | sel | 按钮或ListView中的多种点击效果 |
| divider | div | 分隔线 |
| color | color | 颜色值 |
4. 包(Package)命名方式
采用反域名命名规则,全部使用小写字母。一级包名为com,二级包名为xx(可以是公司或个人),三级包名根据应用进行命名,四级包名为模块名或层级名。如下表所示:
| 包名 | 包中包含内容 |
|---|---|
| com.xx.应用名称缩写.activities | 页面用到的Activity类 (activities层级名用户界面层) |
| com.xx.应用名称缩写.base | 页面中每个Activity类共享的可以写成一个BaseActivity类 (基础共享的类) |
| com.xx.应用名称缩写.adapter | 页面用到的Adapter类 (适配器的类) |
| com.xx.应用名称缩写.tools | 公共工具方法类(tools模块名) |
| com.xx.应用名称缩写.bean/model | 元素类(存放JavaBean) |
| com.xx.应用名称缩写.db | 数据库操作类 |
| com.xx.应用名称缩写.view/ui | 自定义的View类等 |
| com.xx.应用名称缩写.service | Service服务 |
| com.xx.应用名称缩写.broadcast | Broadcast服务 |
5. 类(Class)命名方式
采用大驼峰命名法,尽量避免缩写,除非该缩写是众所周知的, 比如HTML,URL,如果类名称中包含单词缩写,则单词缩写的每个字母均应大写。
| 类 | 描述 | 举例 |
|---|---|---|
| Activity类 | 以Activity为后缀标识 | 欢迎页面类WelcomeActivity |
| Adapter类 | 以Adapter为后缀标识 | 新闻详情适配器NewDetailAdapter |
| 公共方法类 | 以Tools或Manager为后缀标识 | 线程池管理类ThreadPoolManager,日志工具类LogTools |
| 数据库类 | 以DBHelper为后缀标识 | 新闻数据库类NewDBHelper |
| Service类 | 以Service为后缀标识 | 时间服务TimeService |
| BroadcastReceiver类 | 以Broadcast为后缀标识 | 时间通知TimeBroadcast |
| ContentProvider类 | 以Provider为后缀标识 | |
| 直接写的共享基础类 | 以Base开头 | BaseActivity,BaseFragment |
6. 接口(Interface)命名方式
命名规则与类一样采用大驼峰命名法,多以able或ible结尾
例:
Interface Runnable
Interface Accessible
7. 方法(Methods)命名方式
动词或动名词,采用小驼峰命名法。例如:onCreate(),run()。
| 方法 | 说明 |
|---|---|
| initXX() | 初始化相关方法,使用init为前缀标识,如初始化布局initView() |
| isXX() 或 checkXX() | 方法返回值为boolean型的使用is或check为前缀标识 |
| getXX() | 返回某个值的方法,使用get为前缀标识 |
| processXX() | 对数据进行处理的方法,尽量使用process为前缀标识 |
| displayXX() | 弹出提示框和提示信息,使用display为前缀标识 |
| saveXX() | 与保存数据相关的,使用save为前缀标识 |
| resetXX() | 对数据重组的,使用reset前缀标识 |
| clearXX() 或 removeXXX() | 清除数据相关的 |
| drawXXX() | 绘制数据或效果相关的,使用draw前缀标识 |
8. 变量(Variables)命名方式
- 采用小驼峰命名法。类中控件名称必须与xml布局id保持一致。
- 用统一的量词。通过在结尾处放置一个量词,就可创建更加统一的变量,它们更容易理解,也更容易搜索。
例如,请使用strCustomerFirst和strCustomerLast,而不要使用strFirstCustomer和strLastCustomer。
| 量词列表 | 说明 |
|---|---|
| First | 一组变量中的第一个 |
| Last | 一组变量中的最后一个 |
| Next | 一组变量中的下一个 |
| Prev | 一组变量中的上一个 |
| Current | 一组变量中的当前变量 |
9. 常量(Constants)命名方式
全部大写,采用下划线命名法。
例如:
MIN_WIDTH

922

被折叠的 条评论
为什么被折叠?



