Android代码规范

开始之前请详细阅读并遵守Android开发者代码风格指南不要使用拼音命名名称应简洁而富于描述,使用完整单词,避免使用缩写(除非该缩写被更广泛使用,例如URL、HTML)代码中不要出现中文标点字符,例如:‘,’、‘:’注释中可以书写中文标点字符,便于阅读注释遵循英文写作习惯,英文标点符号后空一格,避免句子紧凑颜色色值的字母必须全部大写

命名规则

1. 包命名

包(packages):采用反域名命名规则,全部使用小写字母。一级包名为com,二级包名为xxx(可以是公司域名或者个人命名),三级包名根据应用进行命名,四级包名为模块名或层级名。

包名说明
com.xxx.应用名称缩写.activitiesActivity类
com.xxx.应用名称缩写.fragmentFragment类
com.xxx.应用名称缩写.baseBaseActivity类(基础共享的类)
com.xxx.应用名称缩写.adapterAdapter类
com.xxx.应用名称缩写.utils此包中包含:公共工具方法类(包含日期、网络、存储、日志等工具类)
com.xxx.应用名称缩写.bean(model/domain均可)实体类
com.xxx.应用名称缩写.db数据库操作
com.xxx.应用名称缩写.view(或.ui自定义的View类等
com.xxx.应用名称缩写.serviceService服务
com.xxx.应用名称缩写.broadcastBroadcast广播
com.xxx.应用名称缩写.net网络相关

2. 类命名

类(classes):采用大驼峰命名法,尽量避免缩写,除非该缩写是众所周知的,比如HTML,URL,如果类名称包含单词缩写,则单词缩写的每个字母均应大写。

描述例如
Application类Application为后缀标识XXXApplication
Activity类Activity为后缀标识闪屏页面类SplashActivity
解析类Handler为后缀标识
公共方法类Utils或Manager为后缀标识线程池管理类:ThreadPoolManager;日志工具类:LogUtils
数据库类以DBHelper后缀标识MySQLiteDBHelper
Service类以Service为后缀标识播放服务:PlayService
BroadcastReceiver类以Broadcast为后缀标识时间通知:TimeBroadcast
ContentProvider类以Provider为后缀标识单词内容提供者:DictProvider
直接写的共享基础类以Base为前缀BaseActivity;BaseFragment

3. 方法的命名

方法(methods):动词或动名词,采用小驼峰命名法

onCreate();
run();
方法说明
initXX()初始化相关方法,使用init为前缀标识,如初始化布局initView()
isXX()checkXX()方法返回值为boolean型的请使用is或check为前缀标识
getXX()返回某个值的方法,使用get为前缀标识
processXX()对数据进行处理的方法,尽量使用process为前缀标识
displayXX()弹出提示框和提示信息,使用display为前缀标识
saveXX()与保存数据相关的,使用save为前缀标识
resetXX()对数据重组的,使用reset前缀标识
clearXX()清除数据相关的
removeXX()清除数据相关的
drawXXX()绘制数据或效果相关的,使用draw前缀标识

4. 变量的命名

变量(variables):采用小驼峰命名法。类中控件名称必须与xml布局id保持一致。
公开的常量:定义为静态final,名称全部大写

public staticfinal String ACTION_MAIN="android.intent.action.MAIN";

静态变量:名称以s开头

private static long sInstanceCount = 0;

非静态的私有变量、protected的变量:以m开头

private Intent mItent;

5. 接口的命名

接口(interface):命名规则与类一样采用大驼峰命名法,多以able或ible结尾

interface Runable; interface Accessible;

6. 异常的命名

名称必须以Exception结尾。

NullPointerException

7. 布局文件的命名

全部小写,采用下划线命名法。

名称事例
功能模块main.xml;more.xml;settings.xml
activity_功能模块activity_main.xml;activity_more.xml
Dialog命名:dialog_描述.xmldlg_hint.xml
PopupWindow命名:ppw_描述.xmlppw_info.xml
列表项命名listitem_描述.xmllistitem_city.xml
包含项:include_模块.xmlinclude_head.xml;include_bottom.xml
dapter的子布局:功能模块_item.xmlmain_item.xml

8. 资源ID的命名

命名模式为:view缩写_模块名称_view的逻辑名称

控件缩写
RelativeLayoutrlyt
LinearLayoutllyt
TableLayouttlyt
FrameLayoutflyt
TextViewtv
EditTextet
Buttonbtn
ImageButtonibtn
RadioButtonrbtn
ToggleButtontbtn
CheckBoxchk
Viewv
ImageViewiv
ListViewlv
ScrollViewsclv
ProgressBarpbar

9. 图片的命名

name是模块的名称或功能的描述。

图片名称一般由模块名称/功能描述 + 后缀组成,后缀是可选的。

命名说明
bg_xxx这种图片一般那些比较大的图片,比如作为某个Activity的背景等
btn_xxx按钮,一般用于按钮,而且这种按钮没有其他状态
ic_xxx图标,一般用于单个图标,比如启动图片ic_launcher
sl_xxx状态图片
bg_描述状态1[状态2]用于控件上的不同状态
btn_描述状态1[状态2]用于按钮上的不同状态
chx_描述状态1[状态2]选择框,一般有2态和4态

10. 动画文件命名

动画文件(anim文件夹下):全部小写,采用下划线命名法,加前缀区分。前面为动画的类型,后面为方向。

动画命名备注
fade_in淡入
fade_out淡出
push_down_in从下方推入
push_down_out从下方推出
push_left推像左方
slide_in_from_top从头部滑动进入
zoom_enter变形进入
slide_in滑动进入
shrink_to_middle中间缩小

注释

养成良好的注释习惯,对提升自己的编程能力和团队合作能力有很大的益处。

1. 文件注释

源文件的开头需要注释说明当前的文件信息,包括文件名、作者、版本信息、日期、修改记录等。

*
 1. -----------------------------------------------------------------
 2. Copyright (C) 2007-2014, by HuaShengRun, Shenzhen, All rights reserved.
 3. -----------------------------------------------------------------
 4.  5. File: RequestManager.java
 6. Author: JiongBull
 7. Version: 1.0
 8. Create: 2014-8-10
 9.  10. Changes (from 2014-8-10)
 11. -----------------------------------------------------------------
 12. 2014-8-10 : 创建 RequestManager.java (JiongBull);
 13. -----------------------------------------------------------------
*/

2 类注释

在类的开头添加类信息的描述.

/**
 1. 管理Volley的Request, 使用之前需要调用init()进行初始化.
*/
public class RequestManager {
}

3. 方法注释

一般情况下需要为每个方法添加注释,包括方法的功能描述,参数信息、返回值、异常信息等,有些约定俗成的方法可以不需要添加注释,请参考约定俗成的说明。

/**
 1. 输出日志.
 2.  3. @param context Context
 4. @param logLevel 日志等级
 5. @param tag 标签
 6. @param content 输出内容
 7. @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";

/**
 1. 网络请求队列.
*/
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注释


约定俗成

1. get / set 方法的注释

通过IDE工具批量生成域变量的 get / set 方法可以不用注释。

2. 第三方库生成代码的注释

第三方库生成的代码可以不用注释,例如greenDao生成的代码。

3. 通用类的注释

通用类的公共方法应全部添加注释。

4. 一般情况下的注释

例如在activity、service等文件中,只需对关键的类变量进行注释,方法建议全部添加注释

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值