Android代码规范

1.前言

本文档参考了Google官方Android编码风格规范,尽量形成一个统一的风格,见量知其意就可。

2.源文件基础

2.1 文件名

源文件以其最顶层的类名来命名,大小写敏感,文件扩展名为.java。

2.2 文件编码格式:UTF-8

源文件编码格式为UTF-8

3.源文件结构:按顺序包含以下

3.1 许可证或版权信息

如果一个文件包含许可证或版权信息,那么它应当被放在文件最前面。

3.2 package语句

3.3 import语句

3.3.1 import不要使用通配符

不要出现类似的import语句:import java.util.*;

3.3.2 不要换行

import语句不换行

3.3.3 顺序和间距

import语句可分为以下几组,按照这个顺序,每组由一个空行分隔:

所有的静态导入独立成组

第三方的包,每个顶级包为一组,按字典排序,例如:android, com, junit, org

3.4 类声明

3.4.1 只有一个顶级类

类声明每个顶级类都在一个与它同名的源文件中

3.4.2 类成员顺序

类的成员顺序对易学性有很大的影响,但这也不存在唯一的通用法则,不同的类对成员的排序可能是不一样的。 最重要的是,每个类应该以某种逻辑去排序它的成员,维护者应该要解释这种排序的逻辑。比如:新的方法不能总是习惯性地添加的类的结尾,因为这样是按照时间顺序而非某种逻辑来排序的。

3.4.2.1 区块划分

 常量声明区(static final类型数据)

内部接口声明区

UI控件成员变量声明区

普通成员变量声明区

生命周期回调方法区(onCreate(), onResume(), onPause(), onDestroy())

初始化相关方法区

事件响应方法区

普通逻辑方法区

重载的逻辑方法区

内部类声明区

3.4.2.2 类成员排列通用规则

 按照发生的先后顺序排列

常量按照使用先后顺序排列

UI控件成员变量按照layout文件中的先后顺序排列

普通成员变量按照使用的先后顺序排列

方法基本上都按照调用的先后顺序在各自区块中排列

相关功能作为小区块放在一起(或者封装掉)

3.4.2.3 重载:永不分离

当一个类有多个构造函数,或是多个同名方法,这些函数/方法应该按顺序出现在一起,中间不要放进其它函数/方法。

4.命名约定

4.1 类名

 类名都以UpperCamelCase(驼峰规则)风格编写

类名通常是名词或名词短语,接口名词有时可能是形容词或形容词短语

名词尽量避免缩写,除非该缩写是中所周知的,比如HTML, URL。如果类名称中包含单词缩写,则单词缩写的每个字母均应大写。

安卓相关类命名规则:

描述例如

Activity类Activity为后缀标识欢迎页面类WelcomeActivity

Fragment类Fragment为后缀标识关于我们AboutFragment

Service类Service为后缀标识

Receiver类Receiver为后缀标识推送接收JPushReceiver

Adapter类Adapter为后缀标识行程列表适配器:TripListAdapter

工具方法类Util或Manager为后缀标识(与系统或第三方的Utils区分)或功能+Util日期格式工具类:DateUtil, 日志工具类:LogUtil

4.2 变量命名规则

 在Activity等类中的全局变量均以小写字母m开头(有geter/setter方法的实体类除外),后跟变量的英文描述(采用驼峰规则,如果由多个单词拼接,则每个单词首字母大写),例如:private String mUserName;

在方法中的局部变量,直接以小写字母开头,例如:String userName;

在类中任何地方引用某变量时,能立马区分出该变量是一个全局变量还是局部方法变量

4.3 静态变量、常量命名

字母全部大写,单词之间用”_”分隔开。 例如:public static final String APP_TITLE_TEXT = “app_title”;

4.4 Activity中的UI控件变量的命名

为避免控件和普通成员变量混淆,所有的空间命名军采用如下规则:

m+View缩写(或者全称)+功能名称,例如:

定义一个输入用户名的输入框: EditText mEtUserName;

定义一个输入密码的输入框: EditText mEtPassword;

定义一个等录按钮: Button mBtnLogin;

4.5 layout文件命名规则

 Activity中的layout定义:activity_描述.xml,如:activity_register.xml,表示注册界面

Fragment中的layout定义:fragment_描述.xml,如:fragment_register.xml

Dialog中的layout定义:dialog_描述.xml,如:dialog_login.xml,表示登录的对话框

Popup Window中的layout定义:ppw_描述.xml,如:ppw_info.xml

列表项定义:item_描述.xml,例如:item_city.xml

包含项命名:模块_(位置)描述.xml,例如:activity_main_bottom.xml

通用的包含项命名采用:项目名称缩写_描述.xml,例如:hm_header.xml

4.6 资源文件命名规则

 用途_模块名_逻辑名称

用途_模块名_颜色

用途_逻辑名称

用途_颜色

说明:用途也指控件类型(具体见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白色分割线

sel_edit.xml selector类型的edit图标

名称功能

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

bg_head背景图片使用bg功能说明

def_search_cell默认图片使用def功能说明

ic_more_help图标图片使用ic功能说明

seg_list_line具有分隔特征的图片使用seg功能说明

sel_ok选择图标使用sel功能说明

4.7 values中name的命名

类别命名示例

strings使用下划线命名法,规则:

1.模块名+逻辑名称

2.通用字符串以通用英文字符串命名

friend_title: 好友模块标题栏 

dialog_title: 弹出框标题

ok: 确定

cancel:取消

colors使用下划线命名法,规则:

1.模块名+逻辑名称

2.颜色

3.多种状态的颜色,以sel为前缀

friend_info_bgfriend_bg: 好友信息背景色 

transparent: 透明色

sel_main_btn:包含各种状态的颜色

styles使用驼峰命名法,参照系统定义的styleRectBlueButton

RectBlueButton.Large

4.8 layout文件中的控件id命名

格式为:控件类别型缩写_模块名称_功能简易描述

在登录界面对应的layout文件中,有个输入用户名的输入框,则定义为:

     @+id/et_login_username

在注册界面对应的layout文件中,有个提交按钮,则定义为:

     @+id/btn_register_submit

在我的好友列表里的ListView,则定义为:

     @+id/lv_friends_list

4.9 UI控件缩写表

控件缩写例如

LinearLayoutllmLlLogin

RelativeLayoutrlmRlLogin

FrameLayoutflmFlLogin

TableLayouttlmTlLoing

ButtonbtnmBtnLogin

ImageButtonibtnmIbtLogin

TextViewtvmTvName

EditTextetmEtPwd

ListViewlvmLvFriends

ImageViewivmIvAvatar

GridViewgvmGvPhoto

RecyclerViewrvmRvFriends

ProgressBarpbmPbUpload

SeekBarsbmSbUpload

WebViewwvmWvComm

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

推荐阅读更多精彩内容