Android 编码规范

1 类声明

  • 1.1 区块划分
    建议使用注释将源文件分为明显的区块,区块划分如下

常量声明区
UI控件成员变量声明区
普通成员变量声明区
内部接口声明区
初始化相关方法区
事件响应方法区
普通逻辑方法区
重载的逻辑方法区
发起异步任务方法区
异步任务回调方法区
生命周期回调方法区(出去onCreate()方法)
内部类声明区

  • 1.2 块缩进
    4个空格
  • 1.3 块缩进
    80或100
  • 1.4 方法名
    方法名都以 LowerCamelCase 风格编写。
    方法名通常是动词或动词短语。
    方法 说明
    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.5 常量名
    常量名命名模式为CONSTANT_CASE,全部字母大写,用下划线分隔单词。
  • 1.6 常量名
    非常量字段名以LowerCamelCase风格的基础上改造为如下风格:

基本结构为scopeVariableNameType,

scope:范围

非公有,非静态字段命名以m开头。

静态字段命名以s开头。

公有非静态字段命名以p开头。

公有静态字段(全局变量)命名以g开头。

public static final 字段(常量) 全部大写,并用下划线连起来。

例子:

public class MyClass {  
       public static final int SOME_CONSTANT = 42;  
       public int pField;  
       private static MyClass sSingleton;  
       int mPackagePrivate;  
       private int mPrivate;  
       protected int mProtected; 
       public static int gField; 
}

使用1字符前缀来表示作用范围,1个字符的前缀必须小写,前缀后面是由表意性强的一个单词或多个单词组成的名字,而且每个单词的首写字母大写,其它字母小写,这样保证了对变量名能够进行正确的断句。
量词列表:量词后缀说明

First 一组变量中的第一个
Last 一组变量中的最后一个
Next 一组变量中的下一个变量
Prev 一组变量中的上一个
Cur 一组变量中的当前变量。

说明:

集合添加如下后缀:List、Map、Set

数组添加如下后缀:Arr
2 资源文件命名规范
1. 资源布局文件(XML文件(layout布局文件)):
全部小写,采用下划线命名法

  1. contentview 命名
    必须以全部单词小写,单词间以下划线分割,使用名词或名词词组。
    所有Activity或Fragment的contentView必须与其类名对应,对应规则为:
    将所有字母都转为小写,将类型和功能调换(也就是后缀变前缀)。
    例如:activity_main.xml

  2. Dialog命名:dialog_描述.xml
    例如:dialog_hint.xml

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

  4. 列表项命名:item_描述.xml
    例如:item_city.xml

  5. 包含项命名:模块(位置)描述.xml
    例如:activity_main_head.xml、activity_main_bottom.xml
    注意:通用的包含项命名采用:项目名称缩写
    描述.xml
    例如:xxxx_title.xml
    2. 资源文件(图片drawable文件夹下):
    全部小写,采用下划线命名法,加前缀区分
    命名模式:可加后缀 small 表示小图, big 表示大图,逻辑名称可由多个单词加下划线组成,采用以下规则:
    用途
    模块名
    逻辑名称
    用途模块名颜色
    用途逻辑名称
    用途
    颜色
    说明:用途也指控件类型(具体见UI控件缩写表)
    例如:
    btn_main_home.png 按键
    divider_maket_white.png 分割线
    ic_edit.png 图标
    bg_main.png 背景
    btn_red.png 红色按键
    btn_red_big.png 红色大按键
    ic_head_small.png 小头像
    bg_input.png 输入框背景
    divider_white.png 白色分割线
    如果有多种形态如按钮等除外如 btn_xx.xml(selector)

名称 功能
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
bg_head 背景图片使用bg_功能说明
def_search_cell 默认图片使用def
功能说明
ic_more_help 图标图片使用ic
功能说明
seg_list_line 具有分隔特征的图片使用seg
功能说明
sel_ok 选择图标使用sel
功能说明
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. values中name命名
类别 命名 示例
strings strings的name命名使用下划线命名法,采用以下规则:模块名+逻辑名称 main_menu_about 主菜单按键文字friend_title 好友模块标题栏friend_dialog_del 好友删除提示login_check_email 登录验证

dialog_title 弹出框标题

button_ok 确认键 loading 加载文字

colors colors的name命名使用下划线命名法,采用以下规则:模块名+逻辑名称 颜色 friend_info_bg friend_bg transparent gray
styles styles的name命名使用 Camel命名法,采用以下规则:模块名+逻辑名称 main_tabBottom
5. layout中的id命名
命名模式为:view缩写_view的逻辑名称
使用 AndroidStudio 的插件 ButterKnife Zelezny,生成注解非常方便。
如果不使用 ButterKnife Zelezny,则建议使用 view 缩写做后缀,如:username_tv(展示用户名的TextView)

Android代码规范
https://www.jianshu.com/p/1e8dcaa2d64e
Android:你不能忽略的代码命名规范
https://www.jianshu.com/p/b7a644ea0d25

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。