Android平台团队编码规范

概述

为了能够更好地阅读代码,提高代码的可读性,缩短审查和修改代码过程中浪费的时间,特制订以下编码规范,包括
包名,类名,接口,方法,变量,常量,资源图片,布局文件,动画文件,控件ID,色值,自定义View等声明规范。
基本原则:名词命名对象,动词命名函数。
名词解释:

  • 小驼峰命名法:除首单词外,其余所有单词的第一个字母大写;
  • 大驼峰命名法:所有单词的第一个字母大写;
  • 下划线命名法:单词与单词间用下划线做间隔。

正文

1 包名

基本规则:全部使用小写字母。

app主包名参照:《Android版本号和包名命名规范V1.0》
范 例:com.hengda.smart.shanghaighg.m

本次主要定义模块名或层级名(实际开发中根据相应架构可做适当修改)

包名 说明
com.hengda.xx.xx.xx.base 基础共享的类比如BaseActivity,BaseFragment等
com.hengda.xx.xx.xx.tools 公共工具方法类,比如网络状态判断,文件路径判断等
com.hengda.xx.xx.xx.bean 各种javabean,比如网络请求实体,数据库实体等
com.hengda.xx.xx.xx.db 数据库操作类
com.hengda.xx.xx.xx.adapter 模块或公共适配器类
com.hengda.xx.xx.xx.view 自定义的view
com.hengda.xx.xx.xx.service service服务
com.hengda.xx.xx.xx.broadcast 广播类
com.hengda.xx.xx.xx.listener 自定义的监听器

2 类名

基本规则:大驼峰命名。
规则 举例
Activity类 以Activity为后缀标识 主界面:MainActivity,登录界面LoginActivity
Fragment类 以Fragment为后缀标识 地图:MapFragment, 用户:UserFragment
Adapter类 以Adapter为后缀标识 用户适配器:UserAdapter
公共方法类 Utils或Manager为后缀标识 线程池:ThreadPoolManager,日志工具:LogUtils
数据库类 以DBHelper为后缀标识 展品数据库:ExhibitDBHelper
Service类 以Service为后缀标识 收号服务:BeaconService
广播类 以receiver为后缀标识 通知广播:NotifyReceiver
adapter中的ViewHolder 以Holder为后缀标识 同伴列表中的PartnerHolder
实体Bean 以bean为后缀标识 用户实体 UserBean
类注释

所有类,接口需要添加注释,格式如下

    /**
     * author:作者
     * time:时间
     * desc:描述
     */

3 接口

基本规则:大驼峰命名。

监听类接口以大写字母I开头例如:INotifyListener,INotifyCallBack等
点击触发类以On开头例如:OnClickListener。

4 方法

基本规则:小驼峰命名,禁止拼音;
注意事项
  • 不要在函数名中描述参数,根本无意义。例如findExhibitByAutoNumAndType(int autoNum, int type) 可以简化成 findExhibit(int autoNum, int type)。
  • 注意上下文是否已暗示主语,比如一个保存信息的方法,可以叫做saveMessage(),如果这是Message类的一个方法,就可以简化为save()。
  • 一般情况下不要使用表达不明确的词语,比如do ,handle, perform, return 等等。
  • 方法参数需要正确表达含义比如doSomething(String s1, String s2, String s3)应该写成doSomething(String userName, String userEmail, String userId) 。

此外,在Activity,Fragment,各种View,接口等等中请按照以下规则命名相应方法

方法 说明
initXX() 初始化相关方法,使用init为前缀标识,如初始化布局initView()
getXX() 直接访问数据时,比如javabean的数据获取等,其他情况另选更精确的动词
isXX() 方法返回值为boolean型,is, are, was, were开头,或者搭配情态动词,can, could, may, might, must, shall, should, will 和 would,这些词隐含了假设当前条件为真的反问信息。比如Button.isEnabled(),User.canAccess()
showXX() 弹出提示框和提示信息,比如showErrorToast().比如showSucceesDialog()
saveXX() 保存数据
clearXX()或removeXX() 清除数据
drawXX() 绘制图形
resetXX() 重置数据
setXX() 数据或对象直接赋值
方法注释

重要方法需要添加方法注释,最好英文,格式如下:

     /**
      * desc:描述
      * @param 参数名 参数描述
      * @param 参数名2 参数描述
      * @return 返回值类型说明(返回 void时可不写)
      * @throws Exception 异常说明(可选)
      */

方法內部逻辑注释
全部使用“//”形式标注,注释位于需要注释的语句上方,例如

      //请求成功
      if (response.succeed() == 0) {
      }

5 变量

基本规则:小驼峰命名

1 非public的、非static的字段名称以m开头,例如mXXButton,mXXListener等;
2 其它字段以小写字母开头 ,例如:userName ,passWord;
3 static字段名称以s开头 例如:sSingleton;

6 常量

基本规则:全部大写,单词不缩写望文知意原则,下划线命名法。例如:MAX_SCREEN_WIDTH。

7 资源图片

基本规则:全部小写,采用下划线命名法,单词禁止出现拼音;

启动图标:ic_launcher.png

如果图片可以为各个模块公用可不加模块名,否则需加模块名。

类型 规则 举例
按钮 btn_模块_功能_状态 或者 btn_功能_状态 btn_login_back_normal.png 或者 btn_back_normal.png
图标类 ic_模块_说明 或者 ic_说明 ic_usercenter_userheader.png 或者 ic_userheader.png
背景 bg_模块 或者 bg_说明 bg_login.png 或者 bg_white.png
图片 img_模块_说明 或者 img_说明 img_login_header.png 或者 img_header.png
带点击效果控件 btn_模块_功能_selector 或者 btn_功能_selector btn_login_back_selector.xml 或者 btn_back_selector.xml
默认图 def_模块_说明 或者 def_说明 def_usercenter_header.png 或者 def_header.png
分割线 div_说明 div_top.png
名称 状态
_normal 默认
_pressed 按下
_focused 获取焦点
_disabled 不可点击
_checked _selected 选中
_hovered 获取光标
_checkable 可被选中
_activated 激活
_windowfocused 窗口焦点

点击效果状态命名规则(参考自android-selector-chapek使用本规则可使用android-selector-chapek插件快速生成selecter文件)

8 布局文件

基本规则:全部小写,下划线命名法,单词禁止出现拼音;
名称 规则 举例
Activity activity_模块名.xml activity_register.xml
Fragment fragment_模块名.xml fragment_map.xml
Dialog dialog_说明.xml dialog_editname.xml
List列表 item_说明.xml item_partners.xml
PopupWindow ppw_说明.xml ppw_floorlist.xml
其他子布局 模块_说明_item.xml main_menu_item.xml
包含项 layout_说明.xml layout_header.xml

9 动画文件

基本规则;全部小写,下划线命名法;

10 控件Id

基本规则:全部小写,下划线命名法,单词禁止出现拼音;

格式:控件缩写_功能

控件 缩写
Button btn
TextView tv
ImageButton ib
ImageView iv
Linearlayout ll
Relativelayout rl
Framelayout fl
EditText et
SeekBar skbar
ScollView scv
ListView lv
ProgressBar psbar
WebView wv
CheckBox cb
RadioButton rb

10 colors.xml

基本规则:全部小写,下划线命名法;

分类 规则 举例
纯色 直接色值命名 black
非纯色 模块说明主题色 login_username_light

如果APP只有单一主题可不用设置主题色

11 自定义View

基本规则:大驼峰命名法,以View结尾

格式:功能+View
举例:TipsView;

12 Menu菜单

基本规则:全部小写,下划线命名法;

格式:模块功能.xml
举例:search_add.xml
因为menu文件统一放在menu文件夹下所以不需要再加menu
前缀。

13 strings.xml

//还没想好

参考
Google Java Style 中文版
Android Code Style
Android 开发最佳实践

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,937评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,503评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,712评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,668评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,677评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,601评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,975评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,637评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,881评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,621评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,710评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,387评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,971评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,947评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,189评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,805评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,449评论 2 342

推荐阅读更多精彩内容

  • Android编码规范 源文件基础 文件名 源文件以其最顶层的类名来命名,大小写敏感,文件扩展名为.java。 文...
    呼呼哥阅读 930评论 0 0
  • Android 编码规范 1. 前言 这份文档是 Google Java Code Style 的译文,并稍有添加...
    人失忆阅读 442评论 0 3
  • 作者:李旺成 时间:2016年4月3日 1. 前言 这份文档参考了 Google Java 编程风格规范和 Goo...
    diygreen阅读 39,852评论 19 224
  • 1、引言 数据库设计过程中表、字段等的命名规范也算是设计规范的一部分,不过设计规范更多的是为了确保数据库设计的合理...
    SnowflakeCloud阅读 40,939评论 0 48
  • 请看完结版:Android开发规范(完结版)
    Blankj阅读 8,599评论 25 115