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 开发最佳实践

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

推荐阅读更多精彩内容

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