本文共 6274 字,大约阅读时间需要 20 分钟。
Android开发规范的制定是为了减少团队协作开发的成本,提高开发和维护的效率,方便自己和他人阅读代码。
大驼峰 (pascal)命名法:又称大驼峰命名法,所有单词的第一个字母大写
小驼峰(Camel)命名法:又称小驼峰命名法,除首单词外,其余所有单词的第一个字母大写
下划线命名法:单词与单词间用下划线做间隔,全部大写
成员变量:m***(mInitAvtivity)
局部变量:l*** 形参:a*** 静态:s: 常量:大写_*** 枚举值:em***编码方式统一用UTF-8. Android Studio默认已是UTF-8,只要不去改动它就可以了。
注:所有的网络请求都是 UTF-8 编码(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,没有用一个空格隔开
(1). 两个方法之间
// Good public void initView() { }public void loadData() {
} (2). 方法内的两个逻辑段之间 // Good public void initView() { initView();loadData();
}
(3). 方法内的局部变量和方法的第一条逻辑语句之间 public void loadData() { String url= “”; Int a=0; Int b =1;HttpClient httpClient = new HttpClient();
}
(4). 常量和变量之间 private static final String DATA_RUL = “”;//登录接口private String studentName;//学生姓名
(1). 表达式长度过长
当表达式的无法容纳在一行内时,可换行显示,另起的新行用 8个空格的缩进。 (2). 使用的方法长度过长 当调用的方法无法容纳一行时,可换行显示,另起的新行用 8 个空格的缩进。(大概与 void,也就是上一行的第二个关键字对齐)。 private void loadData(String url, int start, int length, int type, string date);一行声明一个变量,不要一行声明多个变量,这样有利于写注释
private String studentID, studentName;//学生 IDprivate String studentName;//学生姓名
一个方法最多不能超过40行代码,多于40行的代码尽量抽取封装起来。
范围型用枚举类定义,而不要直接用整型或者字符,这样可以减少范围值的有效性检查。
public enum CouponType{ //现金 CASH, //抵用券 DEBIT, //折扣券 DISCOUNT }文字大小:sp
像素大小:px 元素大小:dp字符串:应用中统一在 string.xml中定义
颜色:所有的颜色值统一在 color.xml中定义 样式:应用样式统一在 style.xml 中定义 数组:应用数组统一在 arrays.xml 中定义包名 = com + ”公司名” + “应用缩写” + “模块名称”(采用反域名命名规则,全部使用小写字母。一级包名为 com,二级包名为 (公司名称),三级包名根据应用进行命名,四级包名为模块名或层级名)
.activitys Activity类包 .fragments Fragment类包 .services Service类包 .broadcast BroadcastReceive类包 .adapters Adapter类包 .widgets 自定义控件类包 .interfaces 接口类包 .beans bean类包 .api 网络请求包 .databases 数据库操作类包 .utils 工具类包 .models Model类包使用大驼峰规则,用名词或名词词组命名,每个单词的首字母大写。
以下为几种常用类的命名: 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使用小驼峰规则,用动词命名,第一个单词的首字母小写,其他单词的首字母大写。以下为几种常用方法的命名:
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控件的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常量全部用大写,采用下划线的命名法,例如:PAGE_SIZE = 10;
组件类型{范围}功能,范围可选,只在有明确定义的范围内才需要加上。
以下为几种常用的组件类型命名: 1. {范围_}功能_activity,为 Activity 的命名格式 2. {范围}功能_fragment,为 Fragment 的命名格式 3. {范围}功能_dialog,为 Dialog 的命名格式 4. {范围}功能_item,为 ListView或RecycleView 的 item 命名格式{范围}{前缀}{ 功能}_后缀,控件、范围、前缀可选,但控件和范围至少要有一个,多个功能用下划线隔开。
1. 背景颜色,添加 bg 后缀 2. 文本颜色,添加 text 后缀 3. 分割线颜色,添加 div 后缀 4. 区分状态时,默认状态的颜色,添加 normal 前缀 5. 区分状态时,按下时的颜色,添加 pressed 前缀 6. 区分状态时,选中时的颜色,添加 selected 前缀 7. 区分状态时,不可用时的颜色,添加 disable 前缀{功能}{
范围}后缀{_区分状态},前缀、范围、功能可选,但功能和范围至少要有一个。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)动画类型_动画方向:
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,中间缩小文件顶部统一添加版权声明,声明的格式如下:
/* * Copyright (c) 2016. Inc.All rights reserved. *//**
* 类或接口的描述信息 * * @author * @date */下面几种方法,都必须添加 javadoc 注释,说明该方法的用途和参数说明,以及返回值的说明。
1. 接口中定义的所有方法 2. 抽象类中自定义的抽象方法 3. 抽象父类的自定义公用方法 4. 工具类的公用方法 /** * 登录 * * @param loginName 登录名 * @param password 密码 * @param listener 回调监听器 */ public void login(String loginName, String password, ActionCallbackLisener listener);下面几种情况下的常量和变量,都要添加注释说明,优先采用右侧//来注释,
若注释说明太长则在上方添加注释。 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; //券简介
转载地址:http://lhfsa.baihongyu.com/