Android编码规范之命名规则

命名规则

包名
包名此包中包含
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服务,接收通知

类名
描述例如
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

方法名
方法说明
initXX()初始化相关方法,使用init为前缀标识,如初始化布局initView()
isXX() checkXX()方法返回值为boolean型的请使用is或check为前缀标识
getXX()返回某个值的方法,使用get为前缀标识
handleXX()对数据进行处理的方法,尽量使用handle为前缀标识
displayXX()/showXX()弹出提示框和提示信息,使用display/show为前缀标识
saveXX()与保存数据相关的,使用save为前缀标识
resetXX()对数据重组的,使用reset前缀标识
clearXX()清除数据相关的
removeXXX()清除数据相关的
drawXXX()绘制数据或效果相关的,使用draw前缀标识

类的属性命名
1.常量名
  • 常量名命名模式为CONSTANT_CASE,全部字母大写,用下划线分隔单词

  • 常量一般统一放置在config目录下的AppConfig文件内

  • 同类型的常量,通常放置在同一个内部类中
  • 示例参考 com.xiaoq.sample.mylib.code包下面的Appconfig
2.非常量字段名
  • 非公有,非静态字段命名以m开头。
    int mPackagePrivate;
    private int mPrivate;
    protected int mProtected;

  • 静态字段命名以s开头。
    private static MyClass sSingleton;

  • 公有非静态字段命名以p开头。
    public int pField;

  • 公有静态字段(全局变量)命名以g开头。
    public static int gField;

  • UI控件变量命名参考 附录的 UI控件缩写表

3.量词变量后缀
  • 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)
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值