原则上,编码风格我们遵循google java编码风格;为了方便他人维护代码,我们约定了一些常见的规范
我们约定了:
服务端请求结果:用RE_
开头
数据解析对象:用DTO
后缀
前缀、后缀一律大写,举例
public class RE_SubmitAnswer extends RE_Result {
public C2ServerCheckDetailDTO wrapper;
public static class C2ServerCheckDetailDTO implements Serializable {
public int score;
}
}
RE、DTO放在model
文件夹内
本地数据保存类,使用
Entity
结尾
对于一个类来说,我们约定的顺序如下
- 常量
- 控件变量
- 引用、数值变量
- 静态实例化方法,比如Activity调用的start方法
public static void start(){}
- 系统、重写方法
- public方法
- 私有方法
下面是一些比较常见的编码习惯
- 减少重复代码 ,同样的代码重复多次的时候就可以考虑重构了
- 避免魔鬼数字,尽量使用常量来代替数字
- 职责单一,比如实现下载文件功能就不应该出现在 Activity里。而是应该抽成一个通用的下载工具类,供Activity调用
- 减小代码的影响范围,能用private的不用public,能用临时变量的不用全局变量。
- 缓存耗费资源的计算结果,避免重复计算
- 条件语句遇到流程复杂的,使用switch代替大量的if else语法
下面是一些编码方面性能优化的习惯
- 集合、数组如果事先知道数量,则用该数量初始化比如 List<String> temp = new ArrayList(3);
- 善用android sdk提供的Util类,比如TextUtils,比如用ArrayMap替代HashMap,在hashMap的key是int类型的情况下,使用SparseArray代替HashMap
下面是android Studio提供的功能,使用好,可以减少我们工作量
-
设置变量前缀、后缀等
类里的全局变量使用m前缀,比如mViewPager
,这样会减少和方法内变量、参数的冲突
-
重构之提取代码
复杂的语句用变量表达意图,比如我们经常遇到if()判断语句里面有一大堆条件,稍不留神就容易产生Bug
AS可以帮我们把选中的代码块提取成变量、常量、属性、参数、方法等等形态
-
用好TODO
尽量避免使用TODO,因为TODO经常就不了了之,能当下解决的,加个班搞定吧
有时候资源限制,我们不得不用todo的时候,请使用android Studio 提供的语法
//TODO:todo描述
这样有什么好处呢?我们可以清晰的跟踪到项目中残留的todo数量,方便我们管理,记得删除系统自动创建的//todo语句
-
用好书签
有时候我们在修改代码的时候,会遇到在多个资源文件,类之间的跳转,这个时候我们就可以用书签标注好要定位的行
使用f11在当前行加上书签,使用shift+f11弹出全部书签列表
- 用好条件断点
如何只要特定情况下的断点调试呢?,右键断点打开条件窗口,设置命中条件,点击确定就OK