编程思想规范
1)对于字符串的匹配,使用最细匹配规则,
如:对医生详情连接的匹配使用url.startsWith("http://m.1ping.com/Doctor/Detail/doctorDetail?did=")代替url.startsWith("http://m.1ping.com")
2)对数组的操作,需要做数组下表是否会越界的判断处理,以出现数组越界异常。
代码书写规范
1)方法之间的间距为三个回车
命名规范
类文件命名规范
满足大驼峰规则: 1)每个单词首字母大写。如MyStudentCount; 2)且为名词; 3)对于工具类:使用Utils结尾
方法命名规范
满足小驼峰规则: 1)除第一个单词之外,每个单词首字母大写。如getColor; 2)且为动词;
Id命名规范
1:对应view的前缀 控件 Id命名缩写前缀 botton btn_ imageView img_ editText edit_ TextView txt_ linearLayout llay_ realtiveLayout rlay_ gridView grid_ ListView lv_ WebView webv_ ViewFlipper vflp_ ImageButton imgb_ RadioButton rbtn_ CheckBox cbox_ ProgressBar prgb_ AutoCompleteTextView actv_ GridLayout glay_ FrameLayout flay_ TableLayout tlay_ ScrollView scrlv_ Gallery glry_ TimePicker tmpic_ DatePicker dtPk_ SeekBar skBar_ ZoomControls zmCtl_ VideoView vdeov_ RantingBar ratbar_ Tab tab_ Spinner spn_ MapView mapv_ TextSwitch txtwwt_ ImageSwitch imgswt_ Viewpager vp_
代码中变量命名
1:常量:全部大写,采用下划线命名法.例如:MIN_WIDTH 2:静态变量:全部大写,多个单词则以_分开,比如BOOLEAN_FLAG 3:跟控件相关的变量:添加前缀,并满足小驼峰规则:edtvPhone 4:普通变量,满足小驼峰规则 5:Map对应的变量添加map前缀,HashMap添加hmap前缀 注:小驼峰规则:除第一个单词之外,其他单词首字母大写。如myStudentCount;
图片命名规范
遵从:功能从最大到最小,最范到最具体 大范围_中范围(...)_小范围 如 bg_banner_weather bg_banner_message 前缀缩写: bg:背景 icon:小图标
某些功能命名规范
功能 | 变量命名 | id命名 | 内容命名 | 点击事件命名 |
用户名 | username | userName | ||
昵称 | nickname | **_nickname | nickName | |
头像 | avatar | **_avatar | **Avatar | |
格言 | motto | **_motto | motto | |
找 | find | find | ||
二维码 | ecode | **_ecode | ecode | |
返回键 | back | btn_back | goBack | |
左侧按键 | btnLeft | btn_left | ||
电话号码框 | edtvPhone | edtv_phone | phone | |
密码框 | edtvPwd | edtv_pwd | pwd | |
密码确认 | edtvPwdSure | edtv_pwd_sure | pwdSure | |
验证码框 | edtvVcode | edtv_vcode | vcode | getVcode |
分享 | **Share | **_share | share | goShare |
点赞 | **Support | **_support | support | goSupport |
评论 | **Comment | **_comment | comment | goComment |
收藏 | **Collect | **_collect | collection | addCollect |
经度 | longitude | |||
纬度 | latitude | |||
object | obj | |||
关闭 | close | |||
打开 | open | |||
向服务器请求 | request** | request | ||
获取普通数据 | get | get | ||
我的 | mine | |||
医生 | doctor |
资源文件夹中资源命名规范
规定: 1)资源文件全为小写 2)相应文件前添加相应的前缀 3)在前缀后添加相应的功能 4)用_分隔多个功能,功能范围从大到小 1:对于全局使用(唯一性)的资源命名:line_blue 2:按钮点击事件选择器:selector_ 用下划线分割功能,前面的颜色值为默认颜色,后面的颜色值为按下时的颜色。 如:selector_white_black selector_round_rect_white_black 3: 形状文件:(round/rect/round_rect)_ 4: 图片文件:(icon/bg)_ 5: 动画文件 淡入 fade_in 淡出 fade_out 从下方推入 push_down_in 从下方推出 push_down_out 推像左方 push_left 从头部滑动进入 slide_in_from_top 变形进入 zoom_enter 滑动进入 slide_in 中间缩小 shrink_to_middle 6: 布局文件: Activity对应视图: activity_ fragment对应视图: fragment_ include加载的视图:layout_ 其他控件对应视图: layout_ 分割线视图: line_
功能比较具体的视图可添加功能缩写为前缀:如对话框:dialog_
7:color,dimens资源文件命名规范
对于主题颜色:统一前缀 theme_color_
后加颜色英文单词 gray_
区分同一颜色值的英文字母后缀(注英文字母abc不代表等级) a
如:theme_color_blue_a theme_color_blue_b
对于margin,padding,textSize等dimens值:统一前缀 theme_margin_ theme_padding_ theme_text_size_
后加对应数值的英文单词作为后缀 five ten fourteen
如:theme_margin_five theme_padding_ten theme_text_size_fourteen
注释规范
1:类开头注释: /** *需要别的地方可以看到 */ 2:方法前注释: /** *需要别的地方可以看到 */ 3:块注释: /* *因为别的地方不会看到 */ 4:执行步骤或者变量注释: // 并将此注释添加在备注释部分的后端,而不是上端 如:private int name; //名字 5:静态变量使用: /*** 这个注释是这个意思 */ 放在变量上方 6:一段代码逻辑的注释,保持一行 /*这段是干嘛用的**/ 7:添加TODO规范 必要的地方需要添加TODO,不需要的TODO及时删除。
文档结构规范
model文件
单model
复合model
1. 为了防止空指针问题,需要在属性的get方法做判断 public Today getToday() { if(today==null){ today = new Today(); } return today; }
view文件
viewmodel文件
资源文件
drawable文件
全局性定义: a_控件_特性,如a_tab_selector_checked_bg.xml 表示tab控件中,选择的背景定义
view持有定义: 所属布局名_控件_特性 如 activity_main_tab_health.xml 表示activity_main中tab类型的控件健康档案定义
Log日志规范
1)info级别: URL路径 请求参数 请求返回数据 跟服务器打交道的数据,都在这个类 2)error级别: 这个一般是系统输出的崩溃日志。 3)debug级别: 一般日志,就是我们平常需要跟踪一些调用顺序,一般都在这个类别加。最常用的就是这个。 4)warn级别: 一般try catch 的exception就是这个类别输出日志。 5)将Tag存放到数据库
Android Studio上发布版本规范
发布安装包命名规范
1、ypxs_版本名称_渠道号.apk
GIT操作规范
1、分支命名规定: pack_44:分支为用于打包的代码 pack代表打包,44代表开发版本号 dev_44_im:分支为用于开发版本为44,在im部分进行功能修改 2、使用主干master开发
发布版本步骤:
1、检查App工程目录下的build.gradle文件中的 版本号 及 版本名称 是否正确。 2、检查App工程目录下的build.gradle文件中的buildTypes的release是否配置为正式服务器,及正确添加混淆:如下代码显示 buildTypes { release { minifyEnabled true shrinkResources true signingConfig signingConfigs.config proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' //正式发布的配置,注意:星号只是保密的一种代写 manifestPlaceholders.put("BaiduMobAd_KEY",'8c****f086') manifestPlaceholders.put("UMENG_KEY",'556592a1******0044e9') buildConfigField 'String','Base_Api_URL','"http://api.1ping.com"' //渠道包重命名 applicationVariants.all { variant -> variant.outputs.each { output -> def outputFile = output.outputFile if (outputFile != null && outputFile.name.endsWith('.apk')) { // 输出apk名称为boohee_v1.0_2015-01-15_wandoujia.apk def fileName = "ypxs_${defaultConfig.versionName}_${variant.productFlavors[0].name}.apk" output.outputFile = new File(outputFile.parent, fileName) } } } } } 3、检查上述文件之后,目前需要到开发代码额启动页代码中查看是否为首发状态。 首发状态:启动页图片为静态的并且为首发图片,不加载多张动态图片,所以动态加载并缓存三张启动页的代码需要注释掉 非首发状态:启动页基本页为医评原生启动静态页,并且将代码中加载三张启动页的部分开放出来。 4、上述检查完了,及可以打开Android_studio右边竖排上的Gradle工具,选择app》build,在build下 assembleRelease:双击即可进行多渠道的打包 assemble+渠道号(如assembelAzsc001):双击即进行单渠道打包 5、在打包结束后,可以在工程目录下的app》build》outputs》apk文件夹下看到我们需要的安装包。 6、 1)将打包好的版本交由测试进行测试,并告知更新的内容 2)测试将安装包测试,当确定无bug的情况下将新版本交给运维
文本输入框规范
控件属性
1.手机号码、身高等数值类型
android:inputType="number"
2.密码类型
android:inputType="textPassword"
正则表达式
1.验证邮箱的格式:\\w+@\\w+\\.[a-z]+(\\.[a-z]+)?
2.验证身份证格式:
15位身份证:^[1-9]\\d{7}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}$
18位身份证:^[1-9]\\d{5}[1-9]\\d{3}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}([0-9]|X)$
3.验证手机号格式:(\\+\\d+)?1[34578]\\d{9}$
4.验证中文字符格式:^[\u4E00-\u9FA5]+$
国际化多语言说明
1.Android字符串国际化
只要在 res 文件夹下新建对应语言的 values 文件夹就好了
如,英语环境下的,文件夹命名为:values-en
中文环境为:values-zh
当某一个资源没有在语言环境的对应的资源集合中找到时,就会使用 values 下的资源。
若某一个语言环境没有在项目中定义语言环境,那么也会使用 values 下的资源。
2.图片国际化
同理。 在 res 下新建 drawable-zh 文件夹,存放中文环境下的图片
新建 drawable-en 作为英语环境下的图片
Android多国语言文件夹文件汇总如下:
中文(中国):values-zh-rCN
中文(台湾):values-zh-rTW
中文(香港):values-zh-rHK
英语(美国):values-en-rUS
英语(英国):values-en-rGB
英文(澳大利亚):values-en-rAU
英文(加拿大):values-en-rCA
英文(爱尔兰):values-en-rIE
英文(印度):values-en-rIN
英文(新西兰):values-en-rNZ
英文(新加坡):values-en-rSG
英文(南非):values-en-rZA
阿拉伯文(埃及):values-ar-rEG
阿拉伯文(以色列):values-ar-rIL
保加利亚文: values-bg-rBG
加泰罗尼亚文:values-ca-rES
捷克文:values-cs-rCZ
丹麦文:values-da-rDK
德文(奥地利):values-de-rAT
德文(瑞士):values-de-rCH
德文(德国):values-de-rDE
德文(列支敦士登):values-de-rLI
希腊文:values-el-rGR
西班牙文(西班牙):values-es-rES
西班牙文(美国):values-es-rUS
芬兰文(芬兰):values-fi-rFI
法文(比利时):values-fr-rBE
法文(加拿大):values-fr-rCA
法文(瑞士):values-fr-rCH
法文(法国):values-fr-rFR
希伯来文:values-iw-rIL
印地文:values-hi-rIN
克罗里亚文:values-hr-rHR
匈牙利文:values-hu-rHU
印度尼西亚文:values-in-rID
意大利文(瑞士):values-it-rCH
意大利文(意大利):values-it-rIT
日文:values-ja-rJP
韩文:values-ko-rKR
立陶宛文:valueslt-rLT
拉脱维亚文:values-lv-rLV
挪威博克马尔文:values-nb-rNO
荷兰文(比利时):values-nl-BE
荷兰文(荷兰):values-nl-rNL
波兰文:values-pl-rPL
葡萄牙文(巴西):values-pt-rBR
葡萄牙文(葡萄牙):values-pt-rPT
罗马尼亚文:values-ro-rRO
俄文:values-ru-rRU
斯洛伐克文:values-sk-rSK
斯洛文尼亚文:values-sl-rSI
塞尔维亚文:values-sr-rRS
瑞典文:values-sv-rSE
泰文:values-th-rTH
塔加洛语:values-tl-rPH
土耳其文:values--r-rTR
乌克兰文:values-uk-rUA
越南文:values-vi-rVN
多语言文件归类规范
1.strings_com:放置有关全局、搜索、设置、dialog提示语等string文字。
2.strings_doc:放置医生、医院、科室、会诊、资质认证、排行榜等与医生有关的string文字。
3.strings_im:消息模块。
4.strings_news:有关资讯、微课堂的。
5.strings_user:登录、注册、会员信息、健康档案、任务、订单等string文字。