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

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

推荐阅读更多精彩内容