资源描述
安卓应用开发规范1. 开发工具设置1.1 编码方式统一用UTF-8. Android Studio默认已是UTF-8,只要不去改动它就可以了。1.2 缩进统一为4个空格,将Tab size设置为4则可以保证tab键按4个空格缩进。另外,不要勾选上Use tab character,可以保证切换到不同tab长度的环境时还能继续保持统一的4个空格的缩进样式。1.3 一行声明一个变量,不要一行声明多个变量,这样有利于写注释。private String param1; / 参数1private String param2; / 参数21.4. 行宽设置为100,设置格式化时自动断行到行宽位置。1.5. 使用快捷键进行代码自动格式化。1.6. 一个方法最多不要超过40行代码。1.7 范围型的常量用枚举类定义,而不要直接用整型或字符,这样可以减少范围值的有效性检查。/ 用枚举类定义,Goodpublic enum CouponType / 现金券SerializedName(1)CASH,/ 抵用券SerializedName(2)DEBIT,/ 折扣券SerializedName(3)DISCOUNT/ 用整型定义,Badpublic static final int TYPE_CASH = 1; / 现金券public static final int TYPE_DEBIT = 2; / 抵扣券public static final int TYPE_DISCOUNT = 3; / 折扣券1.8 文字大小的单位统一用sp,元素大小的单位统一用dp。1.9 应用中的字符串统一在strings.xml中定义,然后在代码和布局文件中引用。1.10 颜色值统一在colors.xml中定义,然后在代码和布局文件中引用。另外,不要在代码和布局文件中引用系统的颜色,除了透明。1.11图片资源统一放在mipmap文件夹,相应的文件夹存放相应的路径。mdpi-48*48,hdpi-72*72,xhdpi-96*96,xxhdpi-144*144,xxxhdpi-192*19216drawable存放自定义XML文件。2. 命名规范2.1. 包命名me.keeganlee.kandroid.model2.2. 类和接口命名使用大驼峰规则,用名词或名词词组命名,每个单词的首字母大写。以下为几种常用类的命名: activity类,命名以Activity为后缀,如:LoginActivity fragment类,命名以Fragment为后缀,如:ShareDialogFragment service类,命名以Service为后缀,如:DownloadService adapter类,命名以Adapter为后缀,如:CouponListAdapter 工具类,命名以Util为后缀,如:EncryptUtil 模型类,命名以Bean为后缀,如:CouponBean 接口实现类,命名以Impl为后缀,如:ApiImpl2.3. 方法命名使用小驼峰规则,用动词命名,第一个单词的首字母小写,其他单词的首字母大写。以下为几种常用方法的命名: 初始化方法,命名以init开头,例:initView 按钮点击方法,命名以to开头,例:toLogin 设置方法,命名以set开头,例:setData 具有返回值的获取方法,命名以get开头,例:getData 通过异步加载数据的方法,命名以load开头,例:loadData 布尔型的判断方法,命名以is或has,或具有逻辑意义的单词如equals,例:isEmpty2.4. 控件缩写控件缩写控件缩写TextViewtxtEditTextedtButtonbtnImageButtonibtnImageViewimgListViewlistRadioGroupgroupRadioButtonrbtnProgressBarprogressSeekBarseekCheckBoxchkSpinnerspinnerTableLayouttableTableRowrowLinearLayoutllayoutRelativeLayoutrlayoutScrollViewscrollSearchViewsearchTabHosthostTabWidgetwidget2.5. 常量命名全部为大写单词,单词之间用下划线分开。public final static int PAGE_SIZE = 20;2.6. 变量命名范围描述+意义描述+类型描述的组合,用驼峰式,首字母小写。private TextView headerTitleTxt; / 标题栏的标题private Button loginBtn; / 登录按钮private CouponBO couponBO; / 券实例2.7. 控件id命名控件缩写_范围_意义,范围可选,只在有明确定义的范围内才需要加上。TextViewandroid:id=+id/txt_header_title Buttonandroid:id=+id/btn_login 2.8. layout命名组件类型_范围_功能,范围可选,只在有明确定义的范围内才需要加上。以下为几种常用的组件类型命名: activity_范围_功能,为Activity的命名格式 fragment_范围_功能,为Fragment的命名格式 dialog_范围_功能,为Dialog的命名格式 item_list_范围_功能,为ListView的item命名格式 item_grid_范围_功能,为GridView的item命名格式 header_list_范围_功能,为ListView的HeaderView命名格式 footer_list_范围_功能,为ListView的FooterView命名格式2.9. strings的命名类型_范围_功能,范围可选。以下为几种常用的命名: 页面标题,命名格式为:title_页面 按钮文字,命名格式为:btn_按钮事件 标签文字,命名格式为:label_标签文字 选项卡文字,命名格式为:tab_选项卡文字 消息框文字,命名格式为:toast_消息 编辑框的提示文字,命名格式为:hint_提示信息 图片的描述文字,命名格式为:desc_图片文字 对话框的文字,命名格式为:dialog_文字 menu的item文字,命名格式为:action_文字2.10. colors的命名前缀_控件_范围_后缀,控件、范围、后缀可选,但控件和范围至少要有一个。 背景颜色,添加bg前缀 文本颜色,添加text前缀 分割线颜色,添加div前缀 区分状态时,默认状态的颜色,添加normal后缀 区分状态时,按下时的颜色,添加pressed后缀 区分状态时,选中时的颜色,添加selected后缀 区分状态时,不可用时的颜色,添加disable后缀11. drawable的命名前缀_控件_范围_后缀,控件、范围、后缀可选,但控件和范围至少要有一个。 图标类,添加ic前缀 背景类,添加bg前缀 分隔类,添加div前缀 默认类,添加def前缀 区分状态时,默认状态,添加normal后缀 区分状态时,按下时的状态,添加pressed后缀 区分状态时,选中时的状态,添加selected后缀 区分状态时,不可用时的状态,添加disable后缀 多种状态的,添加selector后缀(一般为ListView的selector或按钮的selector)12. 动画文件命名动画类型_动画方向。 fade_in,淡入 fade_out,淡出 push_down_in,从下方推入 push_down_out,从下方推出 slide_in_from_top,从头部滑动进入 zoom_enter,变形进入 shrink_to_middle,中间缩小3. 注释规范3.1. 文件头注释文件顶部统一添加版权声明,声明的格式如下:/* Copyright (c) 2015. Keegan小钢 Inc. All rights reserved.*/3.2. 类和接口注释类和接口统一添加javadoc注释,格式如下:/* 类或接口的描述信息* author $USER* date $DATE*/3.3. 方法注释下面几种方法,都必须添加javadoc注释,说明该方法的用途和参数说明,以及返回值的说明。 接口中定义的所有方法 抽象类中自定义的抽象方法 抽象父类的自定义公用方法 工具类的公用方法/* 登录* param loginName 登录名* param password 密码* param listener 回调监听器*/public void login(String loginName, String password, ActionCallbackListener<Void> listener);3.4. 变量和常量注释下面几种情况下的常量和变量,都要添加注释说明,优先采用右侧/来注释,若注释说明太长则在上方添加注释。 接口中定义的所有常量 公有类的公有常量 枚举类定义的所有枚举常量 实体类的所有属性变量public static final int TYPE_CASH = 1; / 现金券public static final int TYPE_DEBIT = 2; / 抵扣券public static final int TYPE_DISCOUNT = 3; / 折扣券private int id; / 券idprivate String name; / 券名称private String introduce; / 券简介4.开发环境开发工具:androidstudio版本管理:git开发版本:5.0最低版本:4.05. 第三方开源框架选择l 网络请求:Volleyl JSON解析:fastjson,GSONl 图片缓存:Volleyl 内存检测:leakcanaryl 数据库:sqlitel 融云:即时通讯l 友盟-数据统计,推送,意见反馈l 设计模式:MVC设计模式建议MVP模式,层次清晰,依赖性简单包名建议统一小写l 配置主题:主题遵循配置化原则。l 多渠道打包-gradle flavorl 持续集成-jenkinsl APK瘦身-编程开发的时候应该考虑,迭代优化。保证APK大小5M以内。l 支付服务-微信支付、支付宝l 分享-shade sdkActivity:担任MVC中的C 页面逻辑写在这里,按模块划分Adapter:适配器Api:自定义工具,如Volley自定义HTTP请求Base:基类Bean:MVC中的M javabean类 ,按模块划分Common:常量定义空间Dialog:自定义DialogFragment:碎片Service:服务,按模块划分Utils:工具类Widget:自定义控件Appcontext:自定义AppContextAppmanager:同上Appstart:开始页面6. 测试工具建议可以尝试采用三方自动测试平台,验证APP非功能特性。7. 移动设备尺寸规范汇总参考
展开阅读全文