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.应用名称缩写.serviceService服务,后台服务
com.xx.应用名称缩写.receiverBroadcastReceiver服务,接收通知

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.xml

  • PopupWindow命名:ppw_描述.xml,例如:ppw_info.xml

  • 列表项命名:item_描述.xml

  • 通用列表项:item_city.xml

  • listview:list_item_city.xml

  • gridview:grid_item_city.xml

  • recyclerview: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.xml

  • fragment:fragment_main_tips_loading.xml

  • view:activity_main_xxx_view_tips_loading.xml

  • fragment_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_focusedstate_focused聚焦效果
btn_xx_disabledstate_enabled (false)不可用效果
btn_xx_checkedstate_checked选中效果
btn_xx_selectedstate_selected选中效果
btn_xx_hoveredstate_hovered悬停效果
btn_xx_checkablestate_checkable可选效果
btn_xx_activatedstate_activated激活的
btn_xx_windowfocusedstate_window_focused

3.动画文件(anim文件夹下):
  • 全部小写,采用下划线命名法,加前缀区分。

  • 具体动画采用以下

    • refresh_progress.xml

    • market_cart_add.xml

    • market_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_tabBottom

    • order_detail_goodsItem

    • order_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控件缩写表
控件缩写例子
LinearLayoutllllFriend或者mFriendLL
RelativeLayoutrlrlMessage或mMessageRL
FrameLayoutflflCart或mCartFL
TableLayouttltlTab或mTabTL
ButtonbtnbtnHome或mHomeBtn
ImageButtonibtnbtnPlay或mPlayIBtn
TextViewtvtvName或mNameTV
EditTextetetName或mNameET
ListViewlvlvCart或mCartLV
ImageViewivivHead或mHeadIV
GridViewgvgvPhoto或mPhotoGV
常见英文单词缩写
名称缩写
iconic (主要用在app的图标)
colorcl(主要用于颜色值)
dividerdi(主要用于分隔线,不仅包括Listview中的divider,还包括普通布局中的线)
selectorsl(主要用于某一view多种状态,不仅包括Listview中的selector,还包括按钮的selector)
averageavg
backgroundbg(主要用于布局和子布局的背景)
bufferbuf 缓冲
controlctrl
deletedel
documentdoc
errorerr
escapeesc
incrementinc 增量
infomationinfo
initialinit
imageimg
InternationalizationI18N 国际化
lengthlen
librarylib
messagemsg
passwordpwd
positionpos
serversrv
stringstr
temptmp
windowwnd(win)




作者:阿瑞921
链接:https://www.jianshu.com/p/98282e202e97
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


©小网格工作室 2013-2025