Android最佳实践
-
Upload
supernlee -
Category
Technology
-
view
759 -
download
1
Transcript of Android最佳实践
android 应用开发最佳实践
董炼师(黎三平)
2012.4.7
• 总行数: 101722• 代码行数: 73656• 注释行数 ( 包括单行注释 ) : 14915• 空行数: 13151
Agenda
代码实践设计实践android 实践更多…
包的划分极端,过粗过细客户端由过粗(一个包)到现在的过细类二叉树,适合人脑处理
命名变量名,成员变量和局部变量类名方法名不要过长也不要过短
代码规模一个类不要超过 1000 行一个方法不要超过 47 行
注释不用的代码删除,而不是注释,有 svn 呢,否则混淆试听并且增加人脑负担注释用来描述干什么的(最好这都不要,用你的代码说明一切 - 命名),为什么这么干
Agenda
代码实践设计实践android 实践更多…
原则以功能为导向,而非过程低耦合,高内聚
解耦数据和 UI 分离更重要是解开数据与 activity 上下文的耦合,因为同一数据可能跨多个 activity数据再可以根据业务分成不同模块,顶多门面模式一下
数据管理同样的数据只保存一个副本,否则难以维护且浪费内存配置数据和业务数据分开全局数据和局部数据? Activity context/Application context?
纯数据对象纯数据对象跟 map 比有啥好处? json 串呢?直观,静态检查尽量不用纯数据对象封装数据和操作
静态变量不那么 OO不利于垃圾回收,它的生命周期与类加载器一致,需要显式释放静态变量对象引用到上下文,容易引起内存泄露尽量杜绝使用静态变量,除非 final 它
单例跟静态变量一样,难以回收如果需要上下文 , 与上下文生命周期不一致是不稳定的因素尽量少用,除非是全局只读数据
静态方法不那么 OO最好只在工具类中使用
多线程线程运行不靠谱,依赖于虚拟机的线程调度需要处理同步,复杂度高少用多线程,宁愿多进程(比如 service )
异常处理try 块不要过大,特别是不要嵌套尽量不要用异常来做流程控制不处理的异常尽量向上抛,而不是被猫吃掉异常捕获不是万能的,不要出现问题全套进来
访问控制建议显式的声明访问控制尽量使用存取方法,而不是点操作
同步 vs 异步别等我,我会告诉你回调比返回值优美(比如网络)耗时操作必须异步
Agenda
代码实践设计实践android 实践更多…
view or activity?
以功能导向,同一功能的可以放在一个activity ,不同的分开没必要自己维护 view 树结构,考虑setContentView()
图片图片是内存使用大户,主动回收可以考虑使用软引用可以保存图片数据 (byte[]), 而不是bitmap 对象尽量不要去处理图片(合成,拷贝等)
回收再利用的对象数组类( list 类)的视图尽量使用AdapterViewAdapter 的使用,注意使用convertView可以考虑 viewHolder
活用资源尽量使用资源解决问题,而不是代码资源包括:layout,drawable,values,anim等可以考虑自定义的资源,来描述一些数据
对象生命周期
能局部(没有上下文生命周期那么长)的不全局保存保证 activity 中的对象与 activity 本身的生命周期一样长过长的生命周期的对象可以考虑引用application context在生命周期回调函数适当的地方释放内存,特别是静态变量
流和游标记得关闭流,文件句柄等游标关闭,使用方需要关闭
Agenda
代码实践设计实践android 实践更多…
操作性不追求完美, 100%目标 ,80%随手改进,小步快跑
继续…
好的设计、架构是自己长出来的(迭代)根据实际需求,而不是想象的需求,别过度设计没有完美,适合的就是最好的
Q&A
Thanks!