可读性、可维护性
1、常量提取,避免出现魔法数字;
2、代码嵌套不要太深,通过反向条件前置返回,减少内嵌代码块的深度;
3、类、接口、变量的命名规范和易懂;
健壮性(安全性)
1、使用外部接口传入的对象时,必须对其进行安全性的判断;
2、避免并发问题,合理运用同步锁,过多的同步会造成死锁;
适配性
1、考虑到系统API的适配性。例如,Android开发UI的时候,设置背景setBackground()的时候需要注意系统版本;
2、部分机型padding无法生效,改为margin;
3、ListView设置HeaderView和FooterView的时候,需要在setAdapter()之前设置;
4、新版API才支持的接口,要进行版本判断,;
性能优化
1、循环内部尽量减少变量的初始化,提取到循环外,进行临时变量集合遍历的时候;涉及到集合的长度问题的时候,最好能够在循环外部获取后直接引用,避免遍历的时候要获取size;
2、对于可能存在多次引用的对象,可以复用,避免重复的创建带来的消耗;
3、支持懒加载,使用到的时候才去创建、加载,没必要一开始就直接加载;
4、Android的UI开发,尽量少使用RelativeLayout,以及LinearLayout的weight,减少onMeasure的次数,但是view层级太深时则需要RelativeLayout来减少层级;
5、一开始没必要可见的view,默认设置为gone,减少绘制的次数;
6、在频繁拼接String的使用场景下,使用StringBuffer、StringBuilder替换String,避免创建过多的String对象,没能及时回收,影响性能;
7、try…catch…置于方法内部,避免外部调用忽略,包裹代码块的范围尽可能的小;
其他
1、遇到数据的加密存储的时候,如果要用到分隔符,需要存储数据进行Base64的加密和解密处理;分割字符的时候,“\|”,特殊字符需要添加转义字符;
代码结构设计
1、模块解耦,相关类之间要避免耦合度过高;
2、功能内聚,职责不同的代码块,要独立成不同方法;
3、有多个监听的对象,可以使用观察者模式,达到内容提供者和观察者之间的松耦合;但是如果是单对单的关系,则简单的异步回调就可以满足,避免过度设计;
4、将重复的子程序提取出来,形成一个公共方法或是工具类,方便复用;