android 命名规范
前言:为了梦想,行色匆匆,是否会错过眼前的风景?有时也会懊悔,为何当时没能好好享受时光,但如果当时真的跟他人一样,是否现在也会跟他人一样羡慕现在的自己?
1:包名
| 包名 | 此包中包含 |
|---|---|
| com.xx.应用名称缩写.activity | 页面用到的Activity类 (activitie层级名用户界面层) |
| com.xx.应用名称缩写.fragment | 页面用到的fragment |
| com.xx.应用名称缩写.base | 基础共享的类 |
| com.xx.应用名称缩写.config | 通用的配置 |
| com.xx.应用名称缩写.global | 全局的监听实现类等 |
| com.xx.应用名称缩写.adapter | 页面用到的Adapter类 (适配器的类) |
| com.xx.应用名称缩写.util | 此包中包含:公共工具方法类(util模块名)命名与第三方的utils作区分 |
| com.xx.应用名称缩写.bean | 下面可分:vo(本地类)、bo(远程类)、dto(传递类) |
| com.xx.应用名称缩写.model | 此包中包含:模型类 |
| com.xx.应用名称缩写.db | 数据库操作类 |
| com.xx.应用名称缩写.view | 自定义的View类等,可通用,与app业务无关的 |
| com.xx.应用名称缩写.widget | 自定义的View类等,与app业务相关的 |
| com.xx.应用名称缩写.service | Service服务,后台服务 |
| com.xx.应用名称缩写.receiver | BroadcastReceiver服务,接收通知 |
2:类名
| 类 | 描述 | 例如 |
|---|---|---|
| Activity 类 | Activity为后缀标识 | 欢迎页面类WelcomeActivity |
| Adapter类 | Adapter 为后缀标识 | 新闻详情适配器 NewDetailAdapter |
| 解析类 | Parser为后缀标识 | 首页解析类HomePosterParser |
| 工具方法类 | Util或Manager为后缀标识(与系统或第三方的Utils区分)或功能+Util | 日志工具类: LogUtil(Logger也可)打印工具类:PrinterUtil |
| 管理类 | Manager为后缀标识 | ThreadPoolManager |
| 数据库类 | 以DBHelper后缀标识 | 新闻数据库:NewDBHelper |
| Service类 | 以Service为后缀标识 | 时间服务TimeServiceBroadcast |
| Receiver类 | 以Receiver为后缀标识 | 推送接收JPushReceiver |
| ContentProvider | 以Provider为后缀标识 | |
| 自定义基类 | 以Base开头 | BaseActivity,BaseFragment |
| 实体类 | 模块 + 类型 + 后缀(BO/VO/DTO) | 例如:订单详情实体类及订单详情内的商品实体类 OrderDetailBO、OrderGoodsBO;例如:订单列表实体类及订单列表内的商品实体类 OrderBO/OrderItemBO、OrderGoodsBO/OrderItemGoodsBO;当然,如果订单详情和订单列表内的OrderGoodsBO一致,则可以单独提出来给2个实体类通用 |
| 自定义view | 功能描述 + View | 例如:可以展开收缩的view,CollapsibleView |
| 自定义widget | 模块名 + 类型(List/Info) + Widget | 例如:订单详情内的商品列表,OrderDetailGoodsListWidget; 或者:在widget内新增order目录,放order目录下的GoodsListWidget |
接口名
回调事件监听接口 On + 对象 + Click/Select,例如:OnItemClick/OnMenuSelect
其他接口 功能描述 + Impl
3:方法名
| 方法 | 说明 |
|---|---|
| initXX() | 初始化相关方法,使用init为前缀标识,如初始化布局initView() |
| isXX() checkXX() | 方法返回值为boolean型的请使用is或check为前缀标识 |
| getXX() | 返回某个值的方法,使用get为前缀标识 |
| handleXX() | 对数据进行处理的方法,尽量使用handle为前缀标识 |
| displayXX()/showXX() | 弹出提示框和提示信息,使用display/show为前缀标识 |
| saveXX() | 与保存数据相关的,使用save为前缀标识 |
| resetXX() | 对数据重组的,使用reset前缀标识 |
| clearXX() | 清除数据相关的 |
| removeXXX() | 清除数据相关的 |
| drawXXX() | 绘制数据或效果相关的,使用draw前缀标识 |
4:变量名
非常量字段名以LowerCamelCase风格的基础上改造为如下风格:
基本结构为scopeVariableNameType,
scope:范围
1.1:非公有,非静态字段命名以m开头。
1.2:静态字段命名以s开头。
1.3:公有非静态字段命名以p开头。
1.4:公有静态字段(全局变量)命名以g开头。
public static final 字段(常量) 全部大写,并用下划线连起来。
例子:
1. public class MyClass {
2. public static final int SOME_CONSTANT = 42;
3. public int pField;
4. private static MyClass sSingleton;
5. int mPackagePrivate;
6. private int mPrivate;
7. protected int mProtected;
8. public static int gField;
9. }
5.量词变量后缀
First 一组变量中的第一个
Last 一组变量中的最后一个
Next 一组变量中的下一个变量
Prev 一组变量中的上一个
Cur 一组变量中的当前变量。
例如:mCustomerStrFirst mCustomerStrLast
4.集合添加如下后缀:List、Map、Set
5.数组添加如下后缀:Arr
6.临时变量
临时变量通常被取名为i,j,k,m和n,它们一般用于整型;
c,d,e,它们一般用于字符型;
资源文件命名规范
1.资源布局文件(XML文件(layout布局文件)):
activity_main.xml
frament_main.xml
Dialog命名:dialog_描述.xml,例如:dialog_hint.xmlPopupWindow命名:ppw_描述.xml,例如:ppw_info.xml列表项命名:item_描述.xml通用列表项:item_city.xmllistview:list_item_city.xmlgridview:grid_item_city.xmlrecyclerview:recycler_item_city.xml自定义类似listview:TabLayout:tab_item_city.xml包含项命名:模块_(位置).xml位置:top、 btm、 left、 right例如:activity_main_btm.xml、fragment_main_top.xml通用的包含项命名采用:base_(位置)_项目名称缩写_描述.xml描述:title、 content、 header、 footer例如:base_top_xxxx_title.xml、base_btm_xxxx_header.xml例如:全项目通用 base_top.xml base_btm.xml自定义Widget(布局命名)widget_ + View功能描述/模块 + 类型(list/info) + .xml例如:订单详情内的商品列表 widget_order_detail_goods_list.xml特殊自定义组件/控件例如: com.xiaoq.widget.tips.TipsManager的loading布局/empty布局/重试布局通用:base_tips_loading.xml、base_tips_empty、base_tips_retry各个activity内:activity_描述_tips_loading.xml、activity_main_tips_loading.xmlfragment:fragment_main_tips_loading.xmlview:activity_main_xxx_view_tips_loading.xmlfragment_main_xxx_view_tips_loading.xml,xxx 为view的描述
2.资源文件(图片mipmap及drawable文件夹下):
全部小写,采用下划线命名法,加前缀区分
通用规则:
| 名称 | 功能 |
|---|---|
| bg_head | 背景图片使用bg_功能_说明 |
| def_search_cell | 默认图片使用def_功能_说明 |
| ic_more_help | 图标图片使用ic_功能_说明 |
| seg_list_line | 具有分隔特征的图片使用seg_功能_说明 (false)不可用效果 |
| sel_ok | 选择图标使用sel_功能_说明 |
- 命名模式:可加后缀 _small 表示小图, _big 表示大图,逻辑名称可由多个单词加下划线组成
- 采用以下规则:
用途_模块名_逻辑名称用途_模块名_颜色用途_逻辑名称用途_颜色- 说明:用途也指控件类型(具体见UI控件缩写表)
- 例如:
btn_main_home.png 按键divider_maket_white.png 分割线btn_red.png 红色按键btn_red_big.png 红色大按键divider_white.png 白色分割线- 如果有多种形态如按钮等除外如 btn_xx.xml(selector)
- normal、pressed、disbled、checked 较常用
| 名称 | 功能 |
|---|---|
| btn_xx | 按钮图片使用btn_整体效果(selector) |
| btn_xx_normal | 按钮图片使用btn_正常情况效果 |
| btn_xx_pressed | 按钮图片使用btn_点击时候效果 |
| btn_xx_focused | state_focused聚焦效果 |
| btn_xx_disabled | state_enabled (false)不可用效果 |
| btn_xx_checked | state_checked选中效果 |
| btn_xx_selected | state_selected选中效果 |
| btn_xx_hovered | state_hovered悬停效果 |
| btn_xx_checkable | state_checkable可选效果 |
| btn_xx_activated | state_activated激活的 |
| btn_xx_windowfocused | state_window_focused |
3.动画文件(anim文件夹下):
-
全部小写,采用下划线命名法,加前缀区分。
-
具体动画采用以下
-
规则:
模块名_逻辑名称 -
例如:
refresh_progress.xmlmarket_cart_add.xmlmarket_cart_remove.xml
-
-
普通的tween动画采用如下表格中的命名方式,前面为动画的类型,后面为方向
| 动画命名例子 | 规范写法 |
|---|---|
| fade_in | 淡入 |
| fade_out | 淡出 |
| push_down_in | 从下方推入 |
| push_down_out | 从下方推出 |
| push_left | 推向左方 |
| slide_in_from_top | 从头部滑动进入 |
| zoom_enter | 变形进入 |
| slide_in | 滑动进入 |
| shrink_to_middle | 中间缩小 |
4.styles.xml文件的命名
-
规则:模块名+逻辑名称
main_tabBottomorder_detail_goodsItemorder_list_goodsImg
5. layout中的id命名
- 命名模式为:
View缩写_view的逻辑名称,可以使用AndroidStudio的插件Android Studio Prettify 自动生成findViewById - 例如:tv_Sender_Mobile(展示联系人手机的TextView)
- 可参考 com.xiaoq.sample.mylib.code.CodeActivity
- 当然,全部小写的命名是最标准的,不过为了要适应Prettify插件自动生成满足要求的局部变量,调整为小驼峰命名法,并用下划线分割
附录
注意
其他未在文档内标准的规范则以AndroidStudio自动生成的为准
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 |
常见英文单词缩写
| 名称 | 缩写 |
|---|---|
| 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) |