Android代码规范
- 开始之前请详细阅读并遵守Android开发者代码风格指南
- 不要使用拼音命名
- 名称应简洁而富于描述,使用完整单词,避免使用缩写(除非该缩写被更广泛使用,例如URL、HTML)
- 代码中不要出现中文标点字符,例如:‘,’、‘:’
- 注释中可以书写中文标点字符,便于阅读
- 注释遵循英文写作习惯,英文标点符号后空一格,避免句子紧凑
- 颜色色值的字母必须全部大写
命名规则
1. 包命名
包名由小写的字母组成,默认以com.huashengrun.android.betterus
开头,然后接上根据功能划分的模块名。
com.huashengrun.android.betterus.ui com.huashengrun.android.betterus.ui.widget
2. 类和接口命名
名称的首字母需要大写,如果由多个单词组成,那么每个单词的首字母需要大写,其他字母小写。
class LoginActivity interface OnClickListener
3. 方法的命名
采用驼峰命名法来命名。
public String getName() public boolean isExist()
4. 变量的命名
采用驼峰命名法命名。
- 非公共的、非静态的域变量用m前缀
- 静态域变量用s前缀
- 集合类型的变量使用复数形式,若多种集合类型的变量存储的是相同类型的对象,除了根据功能区分,也可以简单通过集合类型来区分
public class User { private int mId; private static User sUser; String mName; protected int mAge; public int level; public List<Company> companies; public List<Score> listScores; public Score[] arrScores; }
5. 常量的命名
常量需要声明为final static形式,组成名称的单词必须全部大写,单词之间用下划线隔开。
private static final int FADE_IN_TIME = 200;
6. 异常的命名
名称必须以Exception
结尾。
NullPointerException
7. 布局的命名
name是模块的名称或功能的描述,单词必须全部小写,单词之间用下划线隔开。
类型 | 模板 | 事例 |
---|---|---|
Activity | activity_name.xml | activity_main.xml |
Tab | tab_name.xml | tab_home.xml |
Dialog | dialog_name.xml | dialog_login.xml |
ListItem | item_name.xml | item_contact.xml |
8. ID的命名
组成名称的单词必须全部小写,单词之间用下划线隔开,名称不需要复杂的层级定位,只需要准确描述所代表控件的功能作用即可,通常我们在名称前使用控件类型的缩写前缀来避免重复起名的麻烦。
name是模块的名称或功能的描述。
类型 | 模板 | 事例 |
---|---|---|
TextView | tv_name.xml | tv_title.xml |
EditText | et_name.xml | et_mail.xml |
RelativeLayout | rlyt_name.xml | rlyt_login.xml |
LinearLayout | llyt_name.xml | llyt_login.xml |
控件类型缩写对照表
控件类型 | 源文件中缩写 | 资源文件中缩写 |
---|---|---|
View | V | v |
Button | Btn | btn |
ImageButton | Ibtn | ibtn |
RadioButton | Rbtn | rbtn |
ToggleButton | Tbtn | tbtn |
CheckBox | Chk | chk |
TextView | Tv | tv |
EditText | Et | et |
ImageView | Iv | iv |
ListView | Lv | lv |
ProgressBar | Pbar | pbar |
ScrollView | Sclv | sclv |
RelativeLayout | Rlyt | rlyt |
LinearLayout | Llyt | llyt |
TableLayout | Tlyt | tlyt |
FrameLayout | Flyt | flyt |
9. 图片的命名
name是模块的名称或功能的描述。
图片名称一般由模块名称/功能描述 + 后缀组成,后缀是可选的。
前缀 | 描述 | 示例 |
---|---|---|
ic_ | 图标 | ic_launcher.png |
bg_ | 背景图片 | bg_title.png |
sl_ | 状态图片 | sl_button.png |
后缀 | 描述 | 示例 |
---|---|---|
无 | 普通状态 | login.png |
_p | 按压状态 | login_p.png |
_c | 选中状态 | login_c.png |
_d | 不可用状态 | login_d.png |
10. 其他资源命名
遵循见名知意的原则,组成名称的单词必须全部小写,单词之间用下划线隔开。
<string name=”welcome”>欢迎</string>
<color name=”white”>#FFFFFF</color>
注释
养成良好的注释习惯,对提升自己的编程能力和团队合作能力有很大的益处。
1. 文件注释
源文件的开头需要注释说明当前的文件信息,包括文件名、作者、版本信息、日期、修改记录等。
/*
* —————————————————————–
* Copyright (C) 2007-2014, by HuaShengRun, Shenzhen, All rights reserved.
* —————————————————————–
*
* File: RequestManager.java
* Author: JiongBull
* Version: 1.0
* Create: 2014-8-10
*
* Changes (from 2014-8-10)
* —————————————————————–
* 2014-8-10 : 创建 RequestManager.java (JiongBull);
* —————————————————————–
*/
2. 类注释
在类的开头添加类信息的描述.
/** * 管理Volley的Request, 使用之前需要调用init()进行初始化. */ public class RequestManager {}
3. 方法注释
一般情况下需要为每个方法添加注释,包括方法的功能描述,参数信息、返回值、异常信息等,有些约定俗成的方法可以不需要添加注释,请参考约定俗成的说明。
/** * 输出日志. * * @param context Context * @param logLevel 日志等级 * @param tag 标签 * @param content 输出内容 * @param throwable 异常信息, 若没有异常可为空 */ private static void trace(final Context context, final int logLevel, final String tag, final String content, final Throwable throwable) { ... }
4. 域变量和常量注释
/** * 日志的扩展名. */ public static final String LOG_EXTENSION = ".log"; /** * 网络请求队列. */ private RequestQueue mRequestQueue;
5. 其他注释
单行注释
view.setImageResource(defaultImageResId); // 无图片显示默认图片
区块注释
/* 网络图片添加渐变动画 */ Resources resource = mContext.getResources(); final TransitionDrawable transitionDrawable = new TransitionDrawable(new Drawable[] { new ColorDrawable(android.R.color.transparent), new BitmapDrawable(resource, bmpResponse) }); view.setBackgroundResource(defaultImageResId); view.setImageDrawable(transitionDrawable); transitionDrawable.startTransition(RequestManager.FADE_IN_TIME);
6. XML注释
<!– Base application theme. –>
<style name=”AppTheme” parent=”android:Theme.Holo.Light.NoActionBar”>
<!– Customize your theme here. –>
</style>
约定俗成
1. get / set 方法的注释
通过IDE工具批量生成域变量的 get / set 方法可以不用注释。
2. 第三方库生成代码的注释
第三方库生成的代码可以不用注释,例如greenDao生成的代码。
3. 通用类的注释
通用类的公共方法应全部添加注释。
4. 一般情况下的注释
例如在activity、service等文件中,只需对关键的类变量进行注释,方法建议全部添加注释。
转载须注明出处莫高雷草原以及作者@JiongBull。
转载请注明:Android开发中文站 » Android代码规范