Android开发技术框架和编码规范
Android开发技术框架和编码规范
2017年11月23日
目录
第一章 绪论......................................................................................................................... 4
1.1概述.......................................................................................................................... 4
1.2目的.......................................................................................................................... 4
1.3适用范围.................................................................................................................. 4
第二章 IDE选择................................................................................................................. 5
2.2 IDE使用AndroidStudio2.3................................................................................... 5
2.2 Android-Sdk配置:............................................................................................... 5
第三章 框架与第三方选择................................................................................................ 6
第四章 命名注释规范........................................................................................................ 7
4.1 命名规范................................................................................................................. 7
4.1.1 包命名.......................................................................................................... 7
4.1.2 类和接口命名............................................................................................. 7
4.1.3 方法命名..................................................................................................... 8
4.1.4 属性名......................................................................................................... 9
4.1.5 常量名......................................................................................................... 9
4.1.6 layout 命名............................................................................................... 9
4.1.7 id 命名...................................................................................................... 9
4.1.8 资源命名................................................................................................. 10
4.2 注释规范............................................................................................................... 10
4.2.1 基本原则................................................................................................... 10
4.2.2 基本概念................................................................................................... 10
4.2.3 文件注释................................................................................................... 10
4.2.4 类注释....................................................................................................... 11
4.2.5 方法注释................................................................................................... 12
4.2.6类变量注释................................................................................................ 12
4.2.7 其他注释................................................................................................... 12
4.2.8 XML注释............................................................................................... 14
第五章 编码规范............................................................................................................... 15
5.1 对象释放...................................................................................................... 15
5.2 异常处理...................................................................................................... 16
5.3 魔鬼数字...................................................................................................... 16
5.4 控制台输出.................................................................................................. 17
5.5 类的定义...................................................................................................... 17
5.6 判断语句...................................................................................................... 17
5.7 向上转型...................................................................................................... 18
5.8 重复代码...................................................................................................... 18
5.9 代码复杂度.................................................................................................. 18
5.10 枚举的使用................................................................................................ 19
5.11 参数和返回值............................................................................................ 19
第六章 性能与安全.......................................................................................................... 20
6.1 基本原则............................................................................................................... 20
6.2 String 与 StringBuffer...................................................................................... 20
6.3 集合....................................................................................................................... 20
6.4 对象....................................................................................................................... 21
6.5 同步........................................................................................................................ 21
6.6避免使用Static对象............................................................................................ 21
6.7 layout嵌套层次..................................................................................................... 21
第七章 工程目录............................................................................................................... 22
第八章 UI风格.................................................................................................................. 23
8.1 隐藏菜单............................................................................................................... 23
8.2. 指纹解锁的完全控制.......................................................................................... 23
8.3. 模糊背景图片....................................................................................................... 23
8.4. 卡片式设计将会变得更频繁.............................................................................. 23
8.5. 娱乐与个性化....................................................................................................... 24
8.6. 纸质化设计........................................................................................................... 24
8.7. 精挑细选的配色................................................................................................... 24
第九章 打包相关............................................................................................................... 25
9.1 签名使用jks签名................................................................................................ 25
9.2 混淆........................................................................................................................ 25
9.3 加固使用腾讯的乐加固...................................................................................... 25
第十章 app应用市场市场............................................................................................... 26
第一章 绪论
1.1概述
1.2目的
统一规范AndroidStudio编辑环境下android的编码风格和标准。此为最基本的编码要求规范,包括文件、注释、命名规范,必须完全遵守。
1.3适用范围
第二章 IDE选择
2.2 IDE使用AndroidStudio2.3
2.2 Android-Sdk配置:
applicationId "org.loader.myapplication"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
classpath 'com.android.tools.build:gradle:2.3.3'
distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip
第三章 框架与第三方选择
3.1网络框架使用对Okhttp3.0进行封装过后的okhttputils
3.2分享及第三方推送、统计使用友盟Android 社会化组件SDK v6.4.5
3.5可点击+滑动导航栏使用ViewPage+Fragment,可点击+不可滑动导航栏使用FragmentTransaction+FrameLayout
3.6 上拉刷新、仿ios按钮、仿ios时间地址选择等使用自定义组件
3.7 注解、页面绑定,java使用xutils,kotlin自带了
第四章 命名注释规范
4.1 命名规范
4.1.1 包命名
说明:除特殊原因包结构都必须以com.*开头,已有项目包结构不做调整.
eg:com.xx.应用名称缩写.activity 页面用到的Activity类 (activitie层级名用户界面层)
com.xx.应用名称缩写.adapter 页面用到的Adapter类 (适配器的类)
com.xx.应用名称缩写.util 此包中包含:公共工具方法类(util模块名)
com.xx.应用名称缩写.bean 下面可分:vo、po、dto 此包中包含:JavaBean类
com.xx.应用名称缩写.service Service服务
com.xx.应用名称缩写.receiver BroadcastReceiver服务
com.xx.应用名称缩写.mylistener listener接口
4.1.2 类和接口命名
示例:ChatActivity,LogManager, LogConfig
Application 类型的,命名以Application结尾——MTApplication
Activity类型的,命名以Activity结尾——LoginActivity
fragment类型的,建议命名以fragment结尾——CourseFragment
adapter类型的,建议命名以adapter结尾——ContactDetailAdapter
bean 类型的,请求体,建议命名以Req结尾-GetMMSListReq,消息返回提,建议以Resp结尾-BackupProgressResp。
4.1.3 方法命名
规则一:方法名是一个动词,采用大小写混合的方式,第一个单词的首字母小写,其后单词的首字母大写,并且方法名使用类意义完整的英文描述。
规则二:方法中,存取属性的方法采用set 和get方法,动作方法采用动词和动宾结构,类的布尔型的判断方法一般要求方法名使用单词is或has做前缀。
publicvoid setVisible(boolean);
publicvoid addKeyListener(Listener);
规则三:如果函数名超过15 个字母,可采用以去掉元音字母的方法或者以行业内约定俗成的缩写方式缩写函数名。
getCustomerInformation() 改为 getCustomerInfo()
4.1.4 属性名
规则一:属性名使用意义完整的英文描述,变量名应简短且富于描述,第一个单词的字母使用小写,剩余单词首字母大写其余字母小写的大小写混合法。尽量避免单个字符的变量名,除非是一次性的临时变量。
4.1.5 常量名
规则一:常量名使用全大写的英文描述,英文单词之间用下划线分隔开,并且使用static final修饰。
public static final int MAX_VALUE = 1000;
public static final String DEFAULT_START_DATE ="2001-12-08";
4.1.6 layout 命名
规则一:layoutxml 的命名必须以 全部单词小写,单词间以下划线分割,并且使用名词或名词词组,即使用 模块名_功能名称 来命名。
4.1.7 id 命名
规则一:layout中所使用的id必须以全部单词小写,单词间以下划线分割,并且使用名词或名词词组,并且要求能够通过id直接理解当前组件要实现的功能。
4.1.8 资源命名
Home_register_sumbit_bg_selector
4.2 注释规范
4.2.1 基本原则
源程序注释量必须在30%以上。由于每个文件的代码注释不一定都可以达到30%,建议以一个系统内部模块作为单位进行检查。
4.2.2基本概念
4.2.3文件注释
4.2.4 类注释
规则一:类和接口的注释放在class 或者interface 关键字之前,import关键字之后。注释主要是一句话功能简述与功能详细描述。类注释使用“/** */”注释方式
4.2.5方法注释
规则一:每一个方法都要包含 如下格式的注释 包括当前方法的用途,当前方法参数的含义,返回参数的含义。
* @return 为null返回true,否则返回false
public static boolean isNull(Object obj)
return (null ==obj) ? true : false;
4.2.6类变量注释
规则一:成员变量和常量需要使用java doc形式的注释,以说明当前变量或常量的含义,注释方式为“/** */”。
4.2.7其他注释
规则一:方法内部的注释 如果需要多行 使用/*…… */形式,如果为单行是用//……形式的注释。不要再方法内部使用 java doc 形式的注释“/**……**/”。
4.2.8 XML注释
规则一:如果当前layout或资源需要被多处调用,或为公共使用的layout(若list_item),则需要在xml写明注释。要求注释清晰易懂。
第五章 编码规范
5.1对象释放
规则二:集合中的数据如果不使用了应该及时释放,尤其是可重复使用的集合。
说明:由于集合保存了对象的引用,虚拟机的垃圾收集器就不会回收。
5.2 异常处理
规则一:系统非正常运行产生的异常捕获后,如果不对该异常进行处理,则应该记录日志。
说明:此规则指通常的系统非正常运行产生的异常,不包括一些基于异常的设计。若有特殊原因必须用注释加以说明。
5.3 魔鬼数字
规则一:避免使用不易理解的数字,用有意义的标识来替代。涉及物理状态或者含有物理意义的常量,不应直接使用数字,必须用有意义的静态变量或者枚举来代替。
privatefinal static int TRUNK_IDLE = 0;
privatefinal static int TRUNK_BUSY = 1;
privatefinal static int TRUNK_UNKNOWN = -1;
5.4 控制台输出
规则一:不要使用System.out和系统logger进行控制台打印,应该使用统一封装的工具类(如:公共日志工具)进行统一记录或者打印。
说明:代码发布的时候可以统一关闭控制台打印,代码调试的时候又可以打开控制台打印,方便调试。
规则二:用调测开关来切换软件的DEBUG版和正式版,而不要同时存在正式版本和DEBUG版本的不同源文件,以减少维护的难度。
5.5 类的定义
5.6 判断语句
if (“abc”.equals(bean.getName()))
说明:如果为bean.getName().equals(“abc”),当bean.getName()为null时,则会抛出空指针异常。
5.7 向上转型
FileInputStreamfis = new FileInputStream(f);
InputStreamis = (InputStream)fis;
5.8 重复代码
规则一:如果多段代码重复做同一件事情,那么在方法的划分上可能存在问题。
说明:若此段代码各语句之间有实质性关联并且是完成同一件功能的,那么可考虑把此段代码构造成一个新的方法。
5.9 代码复杂度
说明:高技巧语句不等于高效率的程序,实际上程序的效率关键在于设计与算法。
规则二:明确方法功能,精确(而不是近似)地实现方法设计。一个函数仅完成一件功能,即使简单功能也编写方法实现。
说明:虽然为仅用一两行就可完成的功能去编方法好象没有必要,但用方法可使功能明确化,增加程序可读性,亦可方便维护、测试。
规则四:一个方法只完成一项功能,在定义系统的公用接口方法外的方法应尽可能的缩小其可见性。避免用一个类是实例去访问其静态变量和方法。避免在一个较长的方法里提供多个出口:
5.10 枚举的使用
规则一:2.3之前的枚举效率很低,后面google优化了,枚举可以放心使用,效率没有太大差别。
5.11 参数和返回值
public void joinGroup(List userList){}
第六章 性能与安全
6.1 基本原则
6.2String 与StringBuffer
不要使用如下String 初始化方法:String str = new String(“abcdef”);这将产生两个对象,应当直接赋值:String str = “abcdef”;
6.3 集合
Map map =Collections.synchronizedMap(new HashMap());
由于数组、ArrayList 与 Vector 之间的性能差异巨大,故在能使用数组时不要使用ArrayList,尽量避免使用Vector。
我们经常会使用到HashMap这个容器,它非常好用,但是却很占用内存,Android提供了内存效率更高的ArrayMap。
6.4 对象
避免在循环中频繁构建和释放对象。不再使用的对象应及时销毁。如无必要,不要序列化对象。
6.5 同步
6.6避免使用Static对象
因为static的生命周期过长,使用不当很可能导致leak,在Android中应该尽量避免使用static对象。
6.7layout嵌套层次
1.实现复杂的布局时,尽量使用RelativeLayout,由于 RelativeLayout 所需要的嵌套层次少,控件平铺是最终努力的方向,这样性能会好一些。
第七章 工程目录
第八章 UI风格
8.1 隐藏菜单
需要使用的功能有很多,我们可以利用滑动菜单栏,将必要的功能显示,不必要的功能隐藏起来。越来越多的导航菜单都在做减法,让显示的功能尽可能的变少,只有特定的需要使用的选项还保留在上面。
8.2. 指纹解锁的完全控制
指纹解锁初登场时,仅仅被用于解锁。手动输入密码,事实上已经成为过去。在网络飞速发展的现在我们需要更加简单快捷的途径。虽然这一技术已经进化,我想在接下来的一年,这一技术也将会得到更加飞速的发展
8.3. 模糊背景图片
使主要内容更加显眼,读起来也会更加轻松。具有魅力的可访问内容,也会让你网站的转换率变得更好。
8.4. 卡片式设计将会变得更频繁
卡片型设计,对于在移动终端上查看网页十分友好这点已被证实。实际上,越来越多的手机网页已经开始逐渐尝试使用这种方法。
将内容分割、调整内容放置在合适的地方、与相关联的信息放在一起表示等等这样的想法用卡片式设计是十分方便的。另外,在使用卡片型设计时,用户只能选择特定的动作,所以设计可以专注于你觉得必要的内容上进行。
由于卡片型设计,用户可以上传属于自己的多媒体(例如Twitter 的动画或图片等等),可以为你的网站创造更多的流量。
8.5. 娱乐与个性化
8.6. 纸质化设计
纸质化设计是2014年在Google 上发表的较为新颖的视觉语言。一经发布便马上在互联网上流传开来,对于移动终端设计来说是革命性的发现。
在今天很多优秀的APP或网页设计都利用了简约的效果来表现出纸质化设计。同时纸质化设计,与常年被使用的卡片化设计也有着密不可分的关系
8.7. 精挑细选的配色
同色系,类似色,邻近色,:能够保持页面的统一,和谐。纯度的不同来区分轻重
对比色,遵循规律,大统一,小对比。在暖色调中,处理冷色调,降低其纯度。反之相同
第九章 打包相关
9.1 签名使用jks签名
http://blog.csdn.net/yy1300326388/article/details/48344411
9.2 混淆
https://www.cnblogs.com/zhen-android/p/6014336.html
9.3 加固使用腾讯的乐加固
http://wiki.open.qq.com/wiki/%E5%BA%94%E7%94%A8%E5%8A%A0%E5%9B%BA
第十章 app应用市场市场
主要以腾讯应用宝市场与华为市场为主,下面较全面地列举了国内常用的安卓市场:
小米 http://market.xiaomi.com/dev
360 http://dev.app.360.cn/app/list
OPPO http://store.nearme.com.cn
掌上应用汇 http://dev.appchina.com/market/dev/main.action
魅族应用商店 http://developer.meizu.com
乐商店 http://developer.lenovomm.com
搜狗应用市场 http://zhushou.sogou.com/
华为 http://developer.huawei.com/
N多市场 http://nduoa.com/developer/apk/index
三星应用商店 http://seller.samsungapps.com
多特下载 http://www.duote.com/soft/56884.html
移动MM http://dev.10086.cn/?fw=501010
当乐安致 http://www.d.cn/appsubmit.html
酷派 http://www.coolmart.net.cn/developer/coolmart/index.jsp
zol http://xiazai.zol.com.cn/author/login.php
西西软件园 http://www.cr173.com/public.html
木子软件 http://www.muzisoft.com/open/
迅游网 http://www.yxdown.com/AboutUs/swhz.html
安卓在线 http://www.androidonline.net/
飞流 http://dev.feiliu.com/reg/regnoticecom
阿里云 http://appdev.yunos.com/#myapp/spu_list
谷歌应用市场https://play.google.com/apps/publish/signup
Android开发技术框架和编码规范相关推荐
- Android开发技术周报 Issue#17
Android开发技术周报 Issue#17 声明:所有内容收集整理自网络.如有侵权,请联系删除.微信公众号上请点击"阅读原文"阅读完整版本. 业界新闻 1. Google 正秘密 ...
- Android开发技术周报 Issue#27
教程 Android开发技术前线第五期 (@MrSimp1e) 深入Android图形管道.Romain Guy的性能优化案例.图片加载框架Glide.模仿iOS的模糊视图,都是些不错的文章. And ...
- Android开发技术周报176学习记录
Android开发技术周报176学习记录 教程 当 OkHttp 遇上 Http 2.0 http://fucknmb.com/2018/04/16/%E5%BD%93OkHttp%E9%81%87% ...
- 【Android】Google Android开发技术
Android系统是安装在智能移动设备上的嵌入式操作系统,包括Linux内核.系统库与Java运行时.应用程序框架和应用程序层等四部分,具有公开源代码和免费使用的特点,是目前最受欢迎的嵌入式操作系统之 ...
- android 主题xml,自定义Android主题风格theme.xml方法 Android开发技术
自定义Android主题风格theme.xml方法 Android开发技术 2013 年 5 月 23 日 在Android中可以通过自定义主题风格方式来实现个性化以及复用,首先我们创建theme.x ...
- Android开发技术周报 Issue#2
Android开发技术周报 Issue#2 业界新闻 1. Android Studio 2.3 Beta2 发布 Android Studio 2.3 Beata2 发布了. 新的或值得注意的变化: ...
- 微软一站式开发技术框架解决方案 年内展望
微软一站式开发技术框架解决方案 (CodeFx) 自成立至今已有半年.在这半年里,我们完成了130个代码示例,主要覆盖了COM.数据访问.库加载.进程间通信.Office开发.WinForms等技术. ...
- CodeFx: 微软一站式开发技术框架解决方案 2009-7-30 新增sample code简介
微软一站式开发技术框架解决方案 2009年7月30号更新: http://cfx.codeplex.com/Wiki/View.aspx?title=All-In-One%20Code%20Frame ...
- 强烈推荐——微软一站式开发技术框架 All-In-One Code Framework (CodeFx)
如果您是第一次听说All-In-One Code Framework这个项目,请参阅主页上的相关介绍http://cfx.codeplex.com/,以及这两篇blog CodeFx:一站式微软开发技 ...
最新文章
- 开源Python做的火币和ZB搬砖差价监控程序
- Intent进阶 和 Intent-filter 学习笔记
- Xshell连接服务器出现(To escape to local shell, press 'Ctrl+Alt+]'.)问题、xshell终端中文乱码完全解决方法
- Oracle数据库之过滤和排序
- 再谈多态——向上映射及VMT/DMT(转)
- 上传图片被防火墙拦截_Murus Pro Suite——防火墙软件
- 二十八、Pyspider 爬取链家网
- 7.OD-字符串参考
- centos配置ntp时间同步_Linux CentOS配置ntpd时间同步
- udemy下载课程无法播放_最好的Udemy Web开发课程+热门免费课程
- python编的游戏越玩越卡_用Python写游戏,不到十分钟就学会了
- 自学python需要什么_自学Python编程有什么要求
- 黑莓Torch 9800,了无新意落后主流机型
- 新增标签 html知识,互联网常识:html5有哪些新增标签
- 【李宏毅2020 ML/DL】P76 Generative Adversarial Network | Unsupervised Conditional Generation
- [转载] Python中自定义异常与抛出异常
- 运用集合把文字写入读出文件
- mysql类似bulkcopy_mysql中有没有同MSSql中的sqlbulkcopy 类似的类
- 宏基aspire拆机触摸_Acer宏基E1471G笔记本怎么拆机拆主板?
- 词云图,词频图,专门统计某些关键词的词云词频