Android代码规范
来源:互联网 发布:阿里云 备案流程 编辑:程序博客网 时间:2024/06/16 04:50
转载github
目录
一、 前言
二、 包
三、 代码
四、 资源
五、 注释
六、附件
一、 前言
为什么需要开发规范
编码规范对于程序员而言尤为重要,有以下几个原因:1) 一个软件的生命周期中,80%的时间花费在于维护
2) 几乎没有任何一个软件,在其整个生命周期中,均由最初的开发人员来维护
3) 编码规范可以改善软件的可读性,可以让程序员尽快而彻底地理解新的代码
4) 如果你将源码作为产品发布,就需要确任它是否被很好的打包并且清晰无误,一如你已构建的其它任何产品开发规范的作用
1) 减少维护花费
2) 提高可读性
3) 加快工作交接
4) 减少名字增生
5) 降低缺陷引入的机会
二、 包
1、包名全部采用小写,连续的单词只是简单地连接起来,不用下划线区分单词
2、主包名采用反域名规则,一级包名为com/cn/org/edu/net,二级包名为xx(xx可以是公司或者个人的),三级包名根据应用进行命名,四级包名为通用名称/模块名称/层级名称,前三级可以统称为[主包名]
例如:和而泰C-Life美容:com.het.cbeauty
注:和而泰android项目全部以com.het.XX形式命名包括工程和库
常见通用功能部分如下表:
3、只需导入用到的类,不得用*导入包下所有类
例如:import foo.*; (×) import foo.Bar;(√)
4、导入类时,系统类在上方,自定义类在下方
注:如果不想太麻烦:可以用快捷键:Ctrl+Shift+o 快捷某个类/某个包/整个工程src都可以
三、 代码
1、 代码主要采用大/小驼峰命名法,即除首字母外,每个单词首字母大写,整体首字母大小根据其它规范决定
2、 类名、接口名、枚举名等首字母大写,若由多个单词组成,则其后每个单词首字母大写,简明扼要,望文知意原则;
例如:class ConfigManager{}
3、 继承自安卓组件的类,采用父类名作为后缀
规则:1) Acitivity类以Acitivity结尾;2) Fragment类以Fragment结尾;3) Service类以Service结尾;4) BroadcastReceiver类以Receiver结尾;5) ContentProvider类以Provider结尾;6) Application类以Application结尾;7) 自定义View类以Custom/功能**View结尾;8) 自定义Adapter类以Adapter结尾;9) adapter中的ViewHolder以Holder结尾;10) 实体Bean以Model结尾;
例如:class LoginActivity extends Activity{}
4、 接口命名需要简单明了,长度不宜过长,建议在名称前面追加“I”
备注:I**ListenerI**CallBackI**;
5、 自定义异常必须以Exception结尾
6、 除for循环变量外,一律不得使用i、j、k等单字符作为变量名
定义数组时方括号紧随在原始类型之后,数组名称一般使用复数形式
例如:int[] arrays;
7、 常量、枚举等均采用大写形式,用下划线区分各单词
例如:static final String DEVICE_ID = "device_id"enum CounterType {NUMBER,DECIMAL,BOTH}
8、全局变量添加所有者前缀:实例成员变量前缀m(表示member),静态字段命名以s开头(表示static)
例如:
实例变量mRun
静态变量sRun
9、控件变量添加组件前缀,顺序在所有者前缀之后
例如:
全局名称:mBtnNext
局部名称:btnNext
常见控件前缀见附件UI控件表
10、常量一般使用final static修饰,根据需要使用可见性修饰符
例如:public static final int VISIBLE = 0x00000000;
11、一般方法名首字母小写,若由多个单词组成,则其后每个单词首字母大写,方法名通常是动词或动词短语。
例如:
12、 构造方法采用递增方式(参数多的写在后面)
例如:
13、 实体类中不得随意修改的成员变量可添加下划线前缀以作区别
例如:class User{public int _id;}
14、 项目中一般不使用System.out输出,而是使用Log中的方法
15、使用BuildConfig.DEBUG标记对Log进行封装,只在调试时输出重要信息,正式版不输出
16、一般try……catch只捕获需要的异常,至少应当将异常信息输出
17、 代码中不出现中文,最多注释中可以出现中文,应用中的字符串统一在strings.xml中定义,然后在代码和布局文件中引用。
18、编码方式统一用UTF-8 .Android Studio 默认已经是UTF-8,只要不去修改就可以了
19、 一个方法最多不要超过40行代码,源文件的行数不能大于2K行,过多的话可以考虑拆分功能,拆分函数等,尽量避免一行的长度超过 100 个字符。
20、 带有生命周期的组件一定要注意书写顺序
public class ClassName { //1.成员变量集合 //2.回调方法集合 若该类为activity,则:onCreate、**、onDestory; 若该类为Fragment、则:onCreateView、**、onDestory; //3.其他方法集合}
四、 资源
1、资源命名全部采用小写,各单词间以下划线区分
2、 布局文件采用[前缀]_[功能模块].xml的命名方式
例如:
MainActivity的布局activity_main.xml
常见前缀如下表:
包含项命名:模块_(位置)描述.xml (include)
例如:activity_main_head.xml、activity_main_bottom.xml
注意:通用的包含项命名采用:项目名称缩写_描述.xml
xxxx_title.xml
3、layout中的id命名
命名模式为:view缩写_模块名称_view的逻辑名称
4、 资源文件(图片drawable/mipmap文件夹下)
全部小写,采用下划线命名法,加前缀区分,命名模式:可加后缀 _small 表示小图, _big 表示大图,逻辑名称可由多个单词加下划线组成
采用以下规则:
用途模块名逻辑名称
用途模块名颜色
用途_逻辑名称
用途_颜色
说明:用途也指控件类型
例如:
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 白色分割线
常见属性后缀如下表:
注意:
使用AndroidStudio的插件SelectorChapek可以快速生成selector,前提是命名要规范。
5、 动画文件(anim文件夹下)
全部小写,采用下划线命名法,加前缀区分。
具体动画采用以下规则:
模块名_逻辑名称
逻辑名称
refresh_progress.xml
market_cart_add.xml
market_cart_remove.xml
普通的tween动画采用如下表格中的命名方式
// 前面为动画的类型,后面为方向
例如:
fade_in :淡入 fade_out: 淡出
6、values中name命名
五、 注释
1、 文件注释
/**
* -----------------------------------------------------------------
* Copyright (C) 2007-2016, by het, Shenzhen, All rights reserved.
* -----------------------------------------------------------------
*
*<p>描述:(这里用一句话描述这个类的作用)</p>
*名称: ${file_name} <br>
*作者: ~若相惜<br>
*版本: 1.0<br>
*日期: ${DATE} ${TIME}<br>
*/
2、 类定义一般需要写类注释,接口一般需要写接口注释,如果没有文件注释,则需要在类注释和接口注释中标出作者,包括类、接口的目的、作用、功能、继承于何种父类,实现的接口、实现的算法、使用方法、示例程序等例如:
模板:/** * <p>描述:(这里用一句话描述这个类的作用)</p> * 作者: ~若相惜<br> * 日期: ${DATE} ${TIME}<br> * 版本: v2.0<br> * */
3、成员变量、静态变量、常量等添加属性注释,例如:
/** This view is invisible. */public static final int INVISIBLE = 0x00000004;
4、 关联性较大的多个成员变量等可以共用同一条注释,例如:
/** The width and height of View. */private int mWidth, mHeight;
5、 public和protected方法必须添加方法注释,default和private方法建议添加方法注释,例如:
模板:
/**
*
描述:${todo}(这里用一句话描述这个方法的作用)
* ${tags} 设定文件
*/
6、若覆盖基类的方法,则可以不写方法注释,但必须用@Override标出,例如:
@Override
protected void onCreate(Bundle savedInstanceState) {}
“`
7、 switch……case的每个条件一般添加简短说明,例如:
8、 如果if的条件大于2个,则必须写注释,例如:
9、 若功能已完成,但存在效率等潜在问题时,使用XXX加以标记,例如:
10、 规范的注释方法
1) 一个工程应有一个统一的头文件注释,以说明整个工程的信息、创建日期、版本等等
2) 对重要的程序必须加注释进行说明
3) 修改代码或删除时,将原代码用注释的方法屏蔽,同时要加开发者自身对修改操作的注释
4) 移除所有临时或无关的注释,以避免在日后的维护工作中产生混乱
5) 注释应对代码进行准确的说明,不应存在歧义
6) 在整个应用程序中,使用具有一致的标点和结构的统一样式来构造注释
六、 附件
下面为常见的英文单词缩写
- android 编程代码规范
- Android开发代码规范
- android代码规范整理
- Android开发代码规范
- android 代码编写规范
- Android代码规范
- Android代码编写规范
- Android代码规范
- Android代码规范
- Android开发代码规范
- android代码规范
- Android代码规范
- Android代码规范
- Android代码规范
- Android代码规范
- Android代码规范
- android代码书写规范
- Android代码规范
- 第一次尝试
- 【数据结构】AVL树详解
- XTOJ 1249 Rolling Variance【数学,滚动方差】
- html5第二天笔记(下)
- OpenCV alpha(权因子) 融合举例
- Android代码规范
- 经验之道:最有效的iOS内存泄漏检测
- 如何在VMware vCenter Server中快速更改虚拟机版本问题
- 内存管理——常见内存错误及对策
- mysql 中 character set 与 collation 的点滴理解
- ES内部分片处理机制
- java.util.ArrayList学习笔记(一)
- vector遍历方法,c11果然好用
- 微信推送好文锦集(持续更新)