美文网首页
Android平台团队编码规范

Android平台团队编码规范

作者: Knight_Davion | 来源:发表于2017-03-28 14:33 被阅读57次

概述

为了能够更好地阅读代码,提高代码的可读性,缩短审查和修改代码过程中浪费的时间,特制订以下编码规范,包括
包名,类名,接口,方法,变量,常量,资源图片,布局文件,动画文件,控件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平台团队编码规范

    概述 为了能够更好地阅读代码,提高代码的可读性,缩短审查和修改代码过程中浪费的时间,特制订以下编码规范,包括包名,...

  • Android编码规范

    Android开发代码规范相关系列文章: Android命名规范 Android编码规范 Android编码规范有...

  • Android安全编码规范

    Android安全编码规范可分为Android平台上特有的(Android-Only)、C、Java三个方面的安全...

  • Android编码规范指南

    title: Android编码规范指南tags: Android,基础 本文参考最全面的 Android 编码规...

  • RxAndroid入门

    响应式编程 RxJava提供了响应式编码规范,而RxAndroid是专供Android平台的RxJava(只是针对...

  • 解决打包Android Studio Gradle Issue:

    猫眼android技术开发规范文档 书写规范 编码 编码方式统一用UTF-8. Android Studio默认已...

  • Android命名规范

    Android开发代码规范相关系列文章: Android命名规范 Android编码规范 俗话说:无规矩不成方圆,...

  • Android 开发规范

    前言 本文参考Google Java编程规范和阿里巴巴Java规范,Android编码规范部分参考Android开...

  • 2、android产品研发-启动页优化

    上一篇文章中我们介绍加单说明了一下android的编码规范,这里我是强烈建议大家在团队合作中约定编码规范的,哪怕是...

  • 雷铭大前端组件库

    雷铭大前端组件库 包含《雷铭前端开发规范》、《雷铭Android编码规范》、《雷铭iOS编码规范》以及不同技术分类...

网友评论

      本文标题:Android平台团队编码规范

      本文链接:https://www.haomeiwen.com/subject/lspjottx.html