Android开发规范

开发规范制定目的

Android开发规范的制定是为了减少团队协作开发的成本,提高开发和维护的效率,方便自己和他人阅读代码。

一. 概要

1.1类名:

大驼峰 (pascal)命名法:又称大驼峰命名法,所有单词的第一个字母大写

1.2 方法函数:

小驼峰(Camel)命名法:又称小驼峰命名法,除首单词外,其余所有单词的第一个字母大写

1.3 常量:

下划线命名法:单词与单词间用下划线做间隔,全部大写

1.4 代码中一些定义的变量规范:

成员变量:m***(mInitAvtivity)
局部变量:l***
形参:a***
静态:s:
常量:大写_***
枚举值:em***

二.编码规范

编码方式统一用UTF-8. Android Studio默认已是UTF-8,只要不去改动它就可以了。
注:所有的网络请求都是 UTF-8 编码

三.书写规范

3.1 空格使用

(1). 花括号不要单独一行,和它前面的代码同一行。而且,花括号与前面的代码之间用一个空格隔开。
public void method() { // Good
}

public void method()
{ // Bad
}

public void method(){ // Bad
}
(2). if、else、for、switch、while 等逻辑关键字与后面的语句留一个空格隔开
if (booleanVariable) {// Good
// TODO while booleanVariable is true
} else {
// TODO else
}

if(booleanVariable) {//  Bad
//  TODO  while  booleanVariable  is  true
}else  {
//  TODO  else
}

(3). 运算符两边各用一个空格隔开
int result = a + b; //Good, = 和 + 两边各用一个空格隔开

int result=a+b; //Bad,=和+两边没用空格隔开
(4). 方法的每个参数之间用一个空格隔开
public void method(String param1, String param2); // Good,param1 后面的逗号与String 之间隔了一个空格

method(param1, param2); // Good,方法调用时,param1 后面的逗号与 param2 之间隔了一个空格

method(param1,param2); // Bad,没有用一个空格隔开

3.2. 空行使用

(1). 两个方法之间
// Good
public void initView() {
}

public void loadData() {
}
(2). 方法内的两个逻辑段之间
// Good
public void initView() {
initView();

loadData();

}
(3). 方法内的局部变量和方法的第一条逻辑语句之间
public void loadData() {
String url= “http://localhost:8080/login.do”;
Int a=0;
Int b =1;

HttpClient  httpClient  =  new  HttpClient();

}
(4). 常量和变量之间
private static final String DATA_RUL = “http://localhost:8080/login.do”;//登录接口

private String studentName;//学生姓名

3.3. 换行使用

(1). 表达式长度过长
当表达式的无法容纳在一行内时,可换行显示,另起的新行用 8个空格的缩进。
(2). 使用的方法长度过长
当调用的方法无法容纳一行时,可换行显示,另起的新行用 8 个空格的缩进。(大概与 void,也就是上一行的第二个关键字对齐)。
private void loadData(String url, int start, int length, int type,
string date);

3.4. 变量声明

一行声明一个变量,不要一行声明多个变量,这样有利于写注释
private String studentID, studentName;//学生 ID

private String studentName;//学生姓名

3.5. 方法代码行数限制

一个方法最多不能超过40行代码,多于40行的代码尽量抽取封装起来。

3.6. 枚举值的使用

范围型用枚举类定义,而不要直接用整型或者字符,这样可以减少范围值的有效性检查。
public enum CouponType{
//现金
CASH,
//抵用券
DEBIT,
//折扣券
DISCOUNT
}

3.7. 统一单位

文字大小:sp
像素大小:px
元素大小:dp

3.8. 字符串、颜色、样式、数组

字符串:应用中统一在 string.xml中定义
颜色:所有的颜色值统一在 color.xml中定义
样式:应用样式统一在 style.xml 中定义
数组:应用数组统一在 arrays.xml 中定义

四.命名规范

4.1. 包命名

包名 = com + ”公司名” + “应用缩写” + “模块名称”(采用反域名命名规则,全部使用小写字母。一级包名为 com,二级包名为 (公司名称),三级包名根据应用进行命名,四级包名为模块名或层级名)
.activitys Activity类包
.fragments Fragment类包
.services Service类包
.broadcast BroadcastReceive类包
.adapters Adapter类包
.widgets 自定义控件类包
.interfaces 接口类包
.beans bean类包
.api 网络请求包
.databases 数据库操作类包
.utils 工具类包
.models Model类包

4.2. 类和接口命名

使用大驼峰规则,用名词或名词词组命名,每个单词的首字母大写。
以下为几种常用类的命名:
1. activity类,命名以 Activity 为后缀,如:LoginActivity
2. fragment类,命名以 Fragment 为后缀,如:ShareDialogFragment
3. service类,命名以 Service 为后缀,如:DownloadService
4. adapter类,命名以 Adapter 为后缀,如:CouponListAdapter
5. 自定义接口 interface 类,命名以 Api 为后缀,如:OrderCompeletdApi
注:【这里的Api是用户自定义的接口,它是存放在interface包中,而
百度Api、分享Api、支付Api等等放在API包中,表示第三方的API。】
6. 工具类,命名以 Util 为后缀,如:EncryptUtil
7. Bean类,命名以 Bean 为后缀,如:OrderBean
8. 接口实现类,命名以 Impl 为后缀,如:ApiImpl
9. Model类,命名以 Model 为后缀,如:UserModel

4.3. 方法命名

使用小驼峰规则,用动词命名,第一个单词的首字母小写,其他单词的首字母大写。以下为几种常用方法的命名:
1. 初始化方法,命名以 init 开头,例:initView()
2. 按钮点击方法,命名以 to 开头,例:toLogin
3. 设置方法,命名以 set 开头,例:setData
4. 具有返回值的获取方法,命名以 get开头,例:getData
5. 通过异步加载数据的方法,命名以 load 开头,例:loadData
6. 布尔型的判断方法,命名以 is 或 has,或具有逻辑意义的单词如 equals,例:isEmpty
7. 保存数据相关的方法,命名以 save 开头,例:saveGoodsData,
8. 对数据重组的方法,命名以 reset 开头,例:resetOrderData,,
9. 清除数据相关的方法,命名以 clear 开头,例:clearUserData,
10. 弹出提示框或者提示信息,命名以 display 开头,例:displayDialog

4.4. 控件 id 命名

控件的id命名:{范围}模块名称逻辑名称_缩写,例:login_signin_btn(login_head_signin_btn)//登录界面中的登录按钮
1. 控件的缩写
控件 缩写 控件 缩写
TextView txtVi EditText edtTxt
Button btn ImageButton imgBtn
ImageView imgVi ListView listVi
RadioGroup rdoGrp RadioButton rdoBtn
ProgressBar proBar SeekBar skBar
CheckBox chkBox Spinner spinner
TableLayout tbLayout TableRow tbRow
LinearLayout lLayout RelativeLayout rLayout
ScrollView sclVi SearchView searchVi
TabHost host TabWidget widget
AutoCompleteTextView autoTxt VideoView vdoVi
analogClock anaClk DatePicker dtPk
TimePicker tmPk toggleButton tglBtn
ImageSwitch ImgSwt

  1. 范围词
    heard//头 heard_login_signin_btn
    center//中
    foot//脚

4.5. 常量命名

常量全部用大写,采用下划线的命名法,例如:PAGE_SIZE = 10;

4.6. layout 命名

组件类型{范围}功能,范围可选,只在有明确定义的范围内才需要加上。
以下为几种常用的组件类型命名:
1. {范围_}功能_activity,为 Activity 的命名格式
2. {范围}功能_fragment,为 Fragment 的命名格式
3. {范围}功能_dialog,为 Dialog 的命名格式
4. {范围}功能_item,为 ListView或RecycleView 的 item 命名格式

4.7. strings 命名

  1. 页面标题,命名格式为:页面_title
  2. 按钮文字,命名格式为:按钮事件_btn
  3. 标签文字,命名格式为:标签文字_label
  4. 选项卡文字,命名格式为:选项卡文字_tab
  5. 消息框文字,命名格式为:消息_toast
  6. 编辑框的提示文字,命名格式为:提示信息_hint
  7. 图片的描述文字,命名格式为:图片文字_pic
  8. 对话框的文字,命名格式为:文字_dialog
  9. menu的item文字,命名格式为:文字_action

4.8. color 命名

{范围}{前缀}{功能}_后缀,控件、范围、前缀可选,但控件和范围至少要有一个,多个功能用下划线隔开。
1. 背景颜色,添加 bg 后缀
2. 文本颜色,添加 text 后缀
3. 分割线颜色,添加 div 后缀
4. 区分状态时,默认状态的颜色,添加 normal 前缀
5. 区分状态时,按下时的颜色,添加 pressed 前缀
6. 区分状态时,选中时的颜色,添加 selected 前缀
7. 区分状态时,不可用时的颜色,添加 disable 前缀

4.9. drawable 命名

{功能}{范围}后缀{_区分状态},前缀、范围、功能可选,但功能和范围至少要有一个。signin_bg_ic_selected.同一张图片被多处使用则去掉{功能}
1. 图标类,添加 ic 后缀 例:signin_ic_btn(登录按钮的图标)
2. 背景类,添加 bg 后缀,例:activity_loginbg_bg
3. 分隔类,添加 div 后缀,
4. 默认类,添加 def 后缀
5. 样式类, 添加selector 后缀 login_bg_selector
6. 区分状态时,默认状态,添加 normal 例:
7. 区分状态时,按下时的状态,添加 pressed 例:signin_bg_btn_pressed
8. 区分状态时,选中时的状态,添加 selected 例:signin_bg_btn_selected
9. 区分状态时,不可用时的状态,添加 disable 例:signin_bg_btn_disable
10. 多种状态的,添加 selector 后缀(一般为 ListView 的 selector 或按钮的selector)

4.10. 动画文件命名

动画类型_动画方向:
1. fade_in,淡入
2. fade_out,淡出
3. push_down_in,从下方推入
4. push_down_out,从下方推出
5. push_left,从左边推入
6. slide_in_from_top,从头部滑动进入
7. zoom_enter,变形进入
8. shrink_to_middle,中间缩小

五.注释规范

5.1. 文件头注释

文件顶部统一添加版权声明,声明的格式如下:
/*
* Copyright (c) 2016. Inc.All rights reserved.
*/

5.2. 类和接口注释

/**
* 类或接口的描述信息
*
* @author
* @date
*/

5.3. 方法的注释

下面几种方法,都必须添加 javadoc 注释,说明该方法的用途和参数说明,以及返回值的说明。
1. 接口中定义的所有方法
2. 抽象类中自定义的抽象方法
3. 抽象父类的自定义公用方法
4. 工具类的公用方法
/**
* 登录
*
* @param loginName 登录名
* @param password 密码
* @param listener 回调监听器
*/
public void login(String loginName, String password, ActionCallbackLisener listener);

5.4. 变量和常量注释

下面几种情况下的常量和变量,都要添加注释说明,优先采用右侧//来注释,
若注释说明太长则在上方添加注释。
1. 接口中定义的所有常量
2. 公有类的公有常量
3. 枚举类定义的所有枚举常量
4. 实体类的所有属性变量
public static final int TYPE_CASH = 1; //现金券

public static final int TYPE_DEBIT = 2; //抵扣券

public static final int TYPE_DISCOUNT = 3; //折扣券

private int id; //券id

private String name; //券名称

private String introduce; //券简介

时间: 2024-11-05 18:38:14

Android开发规范的相关文章

八一八android开发规范(一种建议)

开发规范重不重要了,不言而喻.这里就给大家说一故事把--据<圣经·旧约·创世记>第11章记载,是当时人类联合起来兴建,希望能通往天堂的高塔.为了阻止人类的计划,上帝让人类说不同的语言,使人类相互之间不能沟通,计划因此失败,人类自此各散东西.此故事试图为世上出现不同语言和种族提供解释.好的开发团队应该是同样的语言,同样的理念,同样的规范去做同一个事情.因此,这里说的开发规范不仅仅在android开发界重要,而且在所有的程序界的重要性也是不言而喻的. 这里说的开发规范分成目录规范,项目和报名的命名

10个常见的Android开发新手误区

  1.不读Android开发文档 Android开发者网站可以很好的帮助你.很多的文档也可以通过SDK工具下载.这些文档不仅仅是Javadoc API的参考,它包括许多指南.教程.视频.培训以及其他有用的资料来创建Android应用程序. Android训练,通过一些有用的教程示例,指导你解决特定问题或实现特定的功能. 2.不熟悉Android开发工具 Android SDK不仅可以用来编译打包你的应用程序在Android手机上运行,而且它有一整套工具来帮助你构建应用程序.其中一些工具可以帮助

android 开发从入门到精通

Android-Tips This is an awesome list of tips for android. If you are a beginner, this list will be the first choice for you when you have a difficult time. Welcome Star and Fork, your support is my greatest affirmation. 学习 Android 至今,大大小小的坑没少踩过,庆幸的是,

Android 开发 之 JNI入门 - NDK从入门到精通

NDK项目源码地址 :  -- 第一个JNI示例程序下载 : GitHub - https://github.com/han1202012/NDKHelloworld.git  -- Java传递参数给C语言实例程序 : GitHub - https://github.com/han1202012/NDKParameterPassing.git  --C语言回调Java方法示例程序 : GitHub - https://github.com/han1202012/NDK_Callback.git

Google主推-Android开发利器——Android Studio,这可能是最全的AS教程!

Android Studio使用手册 "工欲善其事必先利其器" 作为一个Android开发人员来说,一款好的开发工具也是相当重要的,在相当长的时间礼,Google都是基于Eclipse以ADT插件的形式来开发Android应用的,Eclipse可谓是经典到不能再经典的开发工具了,他几乎什么都可以干,也应用很广泛,三十由于近几年来Android市场的日益扩建,Eclipse似乎有点吃力了,而且平台限制也大,于是,Google在2013年的I/O开发者大会上正式推出了这款杀手级的IDE--

Android开发软件架构思考以及经验总结

一.萌芽 作为一只编程经验并不怎么丰富的程序猿来讲,我一直觉得架构师是一个比较神秘的职业,架构设计就更加的高大上了.经过今年的几个项目,之前曾发文叙述我的从MVC到MVP项目重构实战经验,也曾说过我准备对目前手底下的项目进行重构.但是,前段时间,我改变了我的想法.开发模式的重构,仅仅只是换了一个套路,也许在重构的过程中对业务的逻辑进行了一次梳理,也是在基于前人的代码设计上进行了一些优化.但是,这远远还不够,这不是我理想中的开发场景.在项目开发的过程中,也发现存在许多的问题,但是都是一些零散的问题

【我的Android进阶之旅】快速创建和根据不同的版本类型(Dev、Beta、Release)发布Android 开发库到Maven私服

前言 由于项目越来越多,有很多公共的代码都可以抽取出一个开发库出来传到公司搭建好的Maven私服,以供大家使用. 之前搭建的Maven仓库只有Release和Snapshot两个仓库,最近由于开发库有时候不稳定有bug,不便于测试.因此领导说要搭建三个版本的仓库,分别为Release版本.Beta版本.Dev版本,Snapshot版本废弃掉,下面来分别介绍下这三个版本仓库的意义. Dev版本:是用于开发库维护人员能够很快的新增代码并上传到Maven仓库,这样其他开发人员就能够很快的获取该Dev版

Android 命名规范 (提高代码可以读性)

先初略介绍下当前主要的标识符命名法和英文缩写规则:(这段别人那边借鉴的) 在讲解命名规范前,先初略介绍下当前主要的标识符命名法和英文缩写规则.标识符命名法标识符命名法最要有四种: 1 驼峰(Camel)命名法:又称小驼峰命名法,除首单词外,其余所有单词的第一个字母大写. 2 帕斯卡(pascal)命名法:又称大驼峰命名法,所有单词的第一个字母大写 3 下划线命名法:单词与单词间用下划线做间隔. 4 匈牙利命名法:广泛应用于微软编程环境中,在以Pascal命名法的变量前附加小写序列说明该变量的类型

Android开发技术周报 Issue#7

Android开发技术周报 Issue#7 声明:所有内容收集整理自网络.如有侵权,请联系删除. 业界新闻 1. Kotlin 1.1 正式版来了,基于 JVM 的编程语言 开发团队宣布,Kotlin 1.1 正式发布. 这是一个很大的进步,使 Kotlin 能在许多新的场景中使用. Kotlin 的愿景是在现代应用程序的所有组件中使用单一的表达式,高性能的强类型语言. Kotlin 1.1 为实现这一目标迈出了两大步. 2. React Native 0.42.0 正式发布,大量修复和改进 重