Android代码规范文档

来源:互联网 发布:广西广电网络高清机顶盒 编辑:程序博客网 时间:2024/05/21 23:31

命名规范

1. 包命名

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

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

2. 类命名

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

class LoginActivity;     //activity类class SportFragment;     //fragment类class LocalService;      //service类class PictureListAdapter; //adapter类class DateUtils;          //工具类class UserInfoBean;       //模型类class ApiImpl;           //接口实现类

3. 接口命名

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

interface Comparable;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 btnSendNews;TextView tvPassword;

8. 控件ID

规则:view缩写模块名逻辑名

android:id="@+id/btn_news_send"  //样例

view缩写如下:

View           缩写TextView        tvEditText        etButton          btnImageButton     ibtnImageView       ivListView        lvRadioGroup      rgRadioButton     rbProgressBar     pbSeekBar         sbCheckBox        cbSpinner         spTableLayout     tlTableRow        trLinearLayout    llRelativeLayout  rlScrollView      svTabHost         thTabWidget       tw

9. 资源文件名

9.1 layout的文件命名

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

layout文件命名:组件类型_{模块_}功能.xmlactivity_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

模式:

类简写名_{范围_}逻辑名<string name="la_username">用户名</string> //LoginActivity 用户名

10.2 colors.xml

模式:

前缀{_控件}{_范围}{_后缀}, 控件、范围、后缀可选,<color name="bg_login">#FFFFFF</color> //样例
colors命名细则背景颜色添加bg前缀文本颜色添加text前缀分割线颜色添加div前缀区分状态时,默认状态的颜色添加normal后缀区分状态时,按下时的颜色添加pressed后缀区分状态时,选中时的颜色添加selected后缀区分状态时,不可用时的颜色添加disable后缀代码风格原则不要直接忽略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个空格来代表行包裹,包括函数调用。

注释

类注释

每个类完成后应该有作者姓名和联系方式的注释,对自己的代码负责

/**作者: zgkxzx时间: 16-12-20 19:25描述: 用户登录联系方式: zgkxzx@163.com */ public class Login{ … }

方法注释

每一个成员方法(包括自定义成员方法、覆盖方法、属性方法)的方法头都必须做方法头注释

/*方法名:功 能:参 数:返回值:无 */

块注释

private class MessageObserver extends ContentObserver {   public MessageObserver()   {   super(mainHandler);   }    public void onChange(boolean hasChanged) {    // 发送更新UI的消息    mHandler.sendMessage(mHandler.obtainMessage(0x2));  }   }

资源文件注释

<!--登陆颜色--><color name="bg_login">#FFFFFF</color> //样例
2 0
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 娃儿上嘴唇里面破了怎么办 错过了各大招聘怎么办 优秀团员申请表没有获奖情况怎么办 大学生毕业学生登记表涂改了怎么办 c语言挂科了怎么办 吸入腐蚀性气体鼻子流血了怎么办 腰劳损痛的厉害怎么办 两个宝宝斜颈左边力量差怎么办 姿势不正确引起的习惯性斜颈怎么办 一岁宝宝有点斜颈怎么办 六个月宝宝有点斜颈怎么办 5月宝宝有点斜颈怎么办 半岁宝宝头偏怎么办 肌性斜颈成年后怎么办 5个月孩子脖子歪怎么办 宝宝一岁多头歪怎么办 四个月宝宝歪脖子怎么办 1岁宝宝脖子歪怎么办 宝宝脖子是歪的怎么办 小孩脖子睡歪了怎么办 脸部三角区肿了怎么办 面部三角区挤了怎么办 胳膊扭着了肿了怎么办 多囊卵巢综合症治不好怎么办 胳膊受了风发麻怎么办 胳膊抻筋了很疼怎么办 腰抻了怎么办最有效 孩子胳膊抻着了怎么办 胳膊伤筋了疼怎么办 宝宝胳膊抻了疼怎么办 练完普拉提头晕怎么办 生完孩子腰背疼怎么办 宝宝不肯把屎尿怎么办 存的电话删除了怎么办 脚踝的韧带断了怎么办 买了双鞋子想退怎么办 鞋子大了一码怎么办 nba篮球大师身体素质满了怎么办 钉鞋大了一码怎么办 篮球鞋鞋垫会向里面跑怎么办 穿高跟鞋脚肿了怎么办