android开发规范文档
来源:互联网 发布:淘宝长图是什么意思 编辑:程序博客网 时间:2024/05/28 15:34
android开发规范文档
written by wangkuan 20160918
===
1.android开发准备
- 开发环境使用android studio
- 安装.ignore(配合git使用) codeglance(代码预览) markdown surport(md文件支持)这三款插件
- 采用markdown记录开发中的各种问题
- 务必在使用git前在项目根目录中添加.gitignore文件(用.ignore插件生成)
2.开发规定
2.1文件编码
源文件编码格式为 UTF-8
2.2命名规范
- 类名 采用大驼峰驼峰命名法,即功能名+类型名的方式来命名类名及方法名
- 接口命名 和类名基本一致。也可以在接口名前面再加一个大写的I,表明这是一个接口Interface。如:可以表明一个信息是否可以分享的接口,可以命名为Shareable,也可以是IShareable。
- 方法名 动词或动名词,采用小驼峰命名法
- 变量 采用小驼峰命名法
1. 非公有,非静态成员变量命名前面加m(member,表示成员变量之意),如,控件的宽高 mWidth,mHeight
2. 静态类变量前面加s(static,表示静态变量之意),如,一个静态的单例 sSingleInstance
3. 公有非静态字段命名以p开头
4. 公有静态字段(全局变量)命名以g开头
5. 局部变量名
- 局部变量名以LowerCamelCase风格编写,比起其它类型的名称,局部变量名可以有更为宽松的缩写。
- 虽然缩写更宽松,但还是要避免用单字符进行命名,除了临时变量和循环变量。
- 即使局部变量是final和不可改变的,也不应该把它示为常量,自然也不能用常量的规则去命名它。
- 临时变量
- 临时变量通常被取名为i,j,k,m和n,它们一般用于整型;c,d,e,它们一般用于字符型。如: for (int i = 0; i < len ; i++),并且它和第一个单词间没有空格。
- 布局文件名称的定义必须为小写字母,否者无法生成R类,尽量不要用缩写。以表达清楚该文件用途为本,通常情况下用下划线连接各语义单词
例如dialog_title_icons.xml 或者list_menu_item_checkbox.xml
包命名 采用反域名命名规则,全部使用小写字母 例如:com.beidou.bd601.activity
- 一级包名为com;
- 二级包名为xx(可以是公司或则个人的随便);
- 三级包名应用的英文名app_name;
- 四级包名为模块名或层级名;
常量 全部大写,采用下划线命名法.如:MIN_WIDTH,MAX_SIZE
- 布局资源文件 全部小写,采用下划线命名法
- 动画资源文件(anim文件夹下) 全部小写,采用下划线命名法,加前缀区分-
- strings和colors资源文件小驼峰命名法,命名风格大致如下:
1. string命名格式:XX界面_XX功能_str,如 activity_home_welcome_str2. color命名格式:color_16进制颜色值,如红色 color_ff00003. 像string通常建议把同一个界面的所有string都放到一起,方便查找。而color的命名则省去我们头疼的想这个颜色怎么命名。4. selecor、drawable、layer-list资源文件 小驼峰命名法。命名风格通常都是XX_selector、XX_drawable、XX_layer。
举两个比较常用的例子:
1. 按钮按压效果button_selector,正常状态命名为button_normal(XX_normal),按压状态命名为button_pressed(XX_pressed)2. 选择效果checkbox_selector,未选中状态命名为checkbox_unchecked(XX_unchecked),选中状态为checkbox_checked(XX_checked)
- styles、dimens资源文件
1. style采用大驼峰命名法,主题可以命名为XXTheme,控件的风格可以命名为XXStyle
2. dimen采用小驼峰命名法,如所有Activity的titlebar的高度,activity_title_height_dimen
- 控件id命名
2.3编码规范
2.3.1 import语句
- import不要使用通配符
- 不要换行
- 顺序和间距
import语句可分为以下几组,按照这个顺序,每组由一个空行分隔:- 所有的静态导入独立成组
- com.google imports(仅当这个源文件是在com.google包下)
- 第三方的包。每个顶级包为一组,字典序。例如:android, com, junit, org, sun
- java imports5.javax imports组内不空行,按字典序排列。
2.3.2 要分门别类存放各种类
2.3.3 Layout中的常量要在strings.xml文件中定义
以下使用方式错误:
<TextView android:text="评论">
2.3.4 Layout中所有空间字体大小,都定义在dimens.xml中
<resources> <dimen name="bottom_tab_font_size">12dp</dimen> <dimen name="bottom_tab_padding_up">5dp</dimen> <dimen name="bottom_tab_padding_drawable">8dp</dimen></resources>
2.3.5 Activity中,onCreate()方法拆分为3个部分
- initVariables():初始化变量
- initViews();加载layout布局文件,初始化控价
- loadData():调用MobileAPI;
2.3.6 使用fastJSON自定义实体来作为MobileAPI的数据载体
2.3.7 页面之间传值,坚持使用Intent携带序列化实体数据的方式。禁止为了省事使用全局变量进行传值的方式
2.3.8 为空间添加事件,禁止在layout中直接声明事件的方法,以下代码不允许
<Button android:onclick="gotoLogin"..../>
2.3.9 为节省内存,请使用ArrayList<自定义实体>,而不是HashMap
2.3.10 图片的处理,请统一使用第三方组建ImageLoader或Fresco来进行异步加载
2.3.11 SharedPreferences仅用于简单的配置信息,例如设置页面的各种开关。对于复制的对象,还是要保存在本地文件中
2.3.12 Activity中不要嵌套内部类,尽量独立出来
2.3.13 Javadoc
格式 Javadoc块的基本格式如下所示:
/*** Multiple lines of Javadoc text are written here,* wrapped normally...*/public int method(String p1) { ... }
或者是以下单行形式:
/** An especially short bit of Javadoc. */
- 段落
1. 空行(即,只包含最左侧星号的行)会出现在段落之间和Javadoc标记(@XXX)之前(如果有的话)。
2. 除了第一个段落,每个段落第一个单词前都有标签,并且它和第一个单词间没有空格。
- Javadoc标记
1. 标准的Javadoc标记按以下顺序出现:@param, @return, @throws, @deprecated,
2. 前面这4种标记如果出现,描述都不能为空。 当描述无法在一行中容纳,连续行需要至少再缩进4个空格。
- 摘要片段
1. 每个类或成员的Javadoc以一个简短的摘要片段开始。这个片段是非常重要的,在某些情况下,它是唯一出现的文本,比如在类和方法索引中。
2. 这只是一个小片段,可以是一个名词短语或动词短语,但不是一个完整的句子。它不会以A {@code Foo} is a…或This method returns…开头,它也不会是一个完整的祈使句,如Save the record…。然而,由于开头大写及被加了标点,它看起来就像是个完整的句子。
Tip:一个常见的错误是把简单的Javadoc写成 /** @return the customer ID */,这是不正确的。它应该写成/** Returns the customer ID. */。
- 哪里需要使用Javadoc——
至少在每个public类及它的每个public和protected成员处使用Javadoc,以下是一些例外:- 例外:不言自明的方法
对于简单明显的方法如getFoo,Javadoc是可选的(即,是可以不写的)。这种情况下除了写”Returns the foo”,确实也没有什么值得写了。
单元测试类中的测试方法可能是不言自明的最常见例子了,我们通常可以从这些方法的描述性命名中知道它是干什么的,因此不需要额外的文档说明
Tip:
如果有一些相关信息是需要读者了解的,那么以上的例外不应作为忽视这些信息的理由。例如,对于方法名getCanonicalName, - 例外:重载
如果一个方法重载了超类中的方法,那么Javadoc并非必需的。 - 可选的Javadoc: 对于包外不可见的类和方法,如有需要,也是要使用Javadoc的。如果一个注释是用来定义一个类,方法,字段的整体目的或行为,那么这个注释应该写成Javadoc,这样更统一更友好。
- 例外:不言自明的方法
- Android开发规范文档
- android开发规范文档
- android 开发 ------- 接口文档 规范
- Android开发初学者必看文档:Android开发规范
- Android开发初学者必看文档:Android开发规范
- Android开发初学者必看文档:Android开发规范
- Android开发初学者必看文档:Android开发规范
- Android开发初学者必看文档:Android开发规范
- mysql开发规范文档
- mysql开发规范文档
- 前端开发规范文档
- 软件开发文档规范
- 前端开发规范文档
- 前端开发规范文档
- 前端开发规范文档
- 前端开发规范文档
- iOS开发规范文档
- 开发文档规范
- Leetcode #169 Majority Element
- python os.path模块学习
- c3p0数据库连接池
- 数据结构实现时所需的成员变量、标准对外接口
- 静态成员函数调用非静态成员变量
- android开发规范文档
- python numpy库中的n-array
- 译码
- SDWebImage内部实现过程
- 一些常见的web小功能
- C# 多线程(一)
- [CODEVS3243]区间翻转(线段树||splay||块链)
- 编辑器(Win记事本、Sublime、Notepad++)对常见字符编码的处理和区别:GB2312、GBK、ANSI、Unicode、UTF-8
- 用户行为日志的统计,Java mapreduce与Scala spark的代码存档...