Android开发规范

来源:互联网 发布:域名实名审核通过时间 编辑:程序博客网 时间:2024/05/16 06:42

一、 命名规范

1.包命名
规则:包名全部小写,才用反域名命名规则,一级包名是顶级域名,通常为com, edu, gov, net, org等,二级包名,通过为公司名或部门名或者个人名,三级包名通常为项目名,四级包名为模块名或者层级名。以下是从层级包名来划分android项目中采用的包划分结构.

com.domain.xxx.activity  //用户界面中所有的Activity类com.domain.xxx.fragment  //界面中所有的Fragment类com.domain.xxx.adapter   //界面中所有的Adapter类(适配器类)com.domain.xxx.view      //自定义的View类com.domain.xxx.service   //后台Service类com.domain.xxx.util      //项目中常用的公共工具类(网络, IO, 日志等)com.domain.xxx.bean      //实体模型类com.domain.xxx.db        //数据库操作相关的类com.domain.xxx.config    //所有的配置相关的类com.domain.xxx.api       //网络api接口相关de 类

2.类命名
规则:采用大驼峰式命名法,首字母大写,尽量避免缩写,除非该缩写是众所周知的,比如HTML,URL,如果类名称包含单词缩写,则单词缩写的每个字母均应大写。以下列举的是android中几种最为常用的类的命名。

class LoginActivity;     //activity类class DiscoverFragment;  //fragment类class AnalysisService;   //service类class WakeupRankAdapter; //adapter类class StringUtils;       //工具类class UserBean;          //模型类class ApiImpl;           //接口实现类

3.接口命名
规则:命名规则与类命名一样采用大驼峰式命名法,首字母大写,多以able, ible, er结尾

interface Comparable;interface Accessible;interface OnClickListener;

4.方法
规则:采用小驼峰命名法,首字母小写,方法名采用动词或动名词结构。方法的命名应该与方法的真正行为具有对应关系,下面给出一些方法名的动词前缀标示的建议。

方法名 描述getXX() 获取某个属性的返回值setXX() 设置某个属性值initXX()    初始化方法,如初始化布局initView()isXX()  判断是否true的方法;checkXX()   与isXX意义等价processXX() 处理数据updateXX()  更新数据saveXX()    保存数据addXX() 添加数据deleteXX()  删除数据resetXX()   重置数据clearXX()   清除数据removeXX()  移除数据或者视图等,如removeView();drawXX()    绘制数据或者视图

5.变量
规则:采用小驼峰命名法,首字母小写。变量名应简短且能描述其用途,尽量避免拼音,无意义地缩写。除非是临时变量,否则不建议使用单个字符的变量名,如i, j, k。对于变量命名,还有一种风格是google的以字母m为前缀(m为member缩写),在android 源码中随处可见。

private int userName;  //java的一般性风格private int mUserName; //google的成员变量风格,m为member的缩写

6.常量
规则:常量使用全大写字母加下划线的方式命名。

public static final int TAG= "tag";public static final int START_CLASS_NOT_FOUND = -2;

7.控件变量名
规则:首先需要满足第5条变量的规则, 模式:逻辑名 + view缩写

Button sendNewsBtn;TextView passwordTxt;

8.控件ID
规则:view缩写模块名逻辑名

android:id="@+id/btn_news_send"  //样例
view缩写如下:View        缩写TextView    txtEditText    editButton      btnImageButton ibtnImageView   imgListView    lvRadioGroup  rgroupRadioButton rbtnProgressBar rbarSeekBar     seekCheckBox    cbSpinner     spinnerTableLayout tableTableRow    rowLinearLayout    llRelativeLayout  rlScrollView  scrollSearchView  searchTabHost     thostTabWidget   twidget

9.资源文件名
9.1 layout的文件命名
规则:全部小写,采用下划线命名法。layout文件命名:组件类型{模块}功能.xml

activity_news_title.xml //样例命名规范    组件类型activity_{模块_}功能    Activity命名格式fragment_{模块_}功能    Fragment命名格式dialog_{模块_}功能  Dialog命名格式popup_{模块_}功能   PopupWindow命名格式item_list_{模块_}功能   ListView的item命名格式item_grid_{模块_}功能   GridView的item命名格式

9.2 drawable的文件命名
模式:前缀{控件}{范围}{_后缀},控件、范围、后缀可选

bg_login_pressed.png //样例drawable    命名细则图标类 添加ic前缀背景类 添加bg前缀分隔类 添加div前缀默认类 添加def前缀区分状态时,默认状态  添加normal后缀区分状态时,按下时的状态    添加pressed后缀区分状态时,选中时的状态    添加selected后缀区分状态时,不可用时的状态   添加disable后缀多种状态的   添加selector后缀

9.3 动画的文件命名
规则:{范围}动画类型动画方向。

login_fade_in.xml //样例动画命名    描述fade_in 淡入fade_out    淡出push_down_in    从下方推入push_down_out   从下方推出slide_in_from_top   从头部滑动进入zoom_enter  变形进入shrink_to_middle    中间缩小

10.资源内的name命名
10.1 strings.xml
模式:activity名{范围}逻辑名

<string name="login_username">用户名</string> //样例

10.2 colors.xml
模式:前缀{控件}{范围}{_后缀}, 控件、范围、后缀可选,

<color name="bg_login">#FFFFFF</color> //样例colors  命名细则背景颜色    添加bg前缀文本颜色    添加text前缀分割线颜色   添加div前缀区分状态时,默认状态的颜色   添加normal后缀区分状态时,按下时的颜色    添加pressed后缀区分状态时,选中时的颜色    添加selected后缀区分状态时,不可用时的颜色   添加disable后缀

二、代码风格
1.原则
不要直接忽略Exceptions
例如下面的示例,永远不要这样做,无法预测未来可能的变化

  void setServerPort(String value) {      try {          serverPort = Integer.parseInt(value);      } catch (NumberFormatException e) { }  }正确的做法应该如下:  void setServerPort(String value) throws ConfigurationException {      try {          serverPort = Integer.parseInt(value);      } catch (NumberFormatException e) {          throw new ConfigurationException("Port " + value + " is not valid.");      }  }
import采用完全限定名不提倡:  import foo.*;正确做法:  import foo.Bar;括号风格:不提倡:  if (condition)      body();正确做法:  if (condition) {      body();  }

使用空格来缩进
使用4个空格缩进来代表块,而绝不使用tab键; 使用8个空格来代表行包裹,包括函数调用。
2.注释

1.类注释 每个类完成后应该有作者姓名和联系方式的注释,对自己的代码负责/**作者: yuanhh时间: 13-12-20 19:25描述: 用户登录联系方式: yuanhuihui208@163.com */ public class Login{ … }2.方法注释 每一个成员方法(包括自定义成员方法、覆盖方法、属性方法)的方法头都必须做方法头注释/*方法名:功 能:参 数:返回值:无 */3.快注释private class MessageObserver extends ContentObserver { public MessageObserver() { super(mainHandler); }  public void onChange(boolean hasChanged) {   // 发送更新UI的消息   mHandler.sendMessage(mHandler.obtainMessage(0x2));  }   }4.资源文件注释#FF0000#0079FF