CR总结--java函数CR

8 篇文章 0 订阅
5 篇文章 0 订阅
序号问题建议
1圈复杂度不超过10
2synchronized的范围控制范围,缩小粒度
3出现伪重载,多个不同修饰符重载函数的修饰一致
4参数多不超过5个,多个合并为个参数类
5加锁必要性如果非多线程使用场景,去掉锁
6容器类如StringBuilder,hashMap制定预设大小
7优先使用JDK工具函数
8锁对象选择最优是new byte[0]作为锁对象
9类的对外接口个数,即函数的修饰是否合理不要一股脑的public,控制对外暴露的风险
10判断逻辑里条件个数太多,理解困难判断逻辑里超过4个即整理为一个独立函数
11资源释放问题在finally或1.8后的try
12函数逻辑规整使用空格 归类逻辑
13函数名见名知意,首先要使用正确的单词;不能太长,太长也意味函数包含太多逻辑;设置/获取数值型的函数名称需要带上数值单位
14函数的抛出异常需要在注释里说明,或者使用throws
15有效代码行数40
16无效代码清理
17局部变量距离最近使用不超过3行
19防范式编程异常或值校验,要先做,尤其是对外接口
20注释public 必须注释
21方法逻辑清晰功能单一和函数名称切合,如有修改逻辑及时修改注释
22对之前版本的兼容对外接口函数,旧函数如果要替换,需要一个弃用过程,并提示替换的方案
23参数名称见名知意,参数如果有多个单位层级,需要独立一个参数表示单位,如时间单位,磁盘大小的单位
24函数功能的对称性,如有如add 就要remove,init 对应destroy
25防止死锁,查看锁对象的应用位置
26使用线程池控制线程大学,和任务队列大小,Exctors方法谨慎使用。
27多算法的合理组合如快速排序是286个以下,以上就使用合并排序
28函数参数的信息量太大,不可测,如一个对象传进来,只是使用了对象的一个属性坚持够用就好
29入参数被修改不要修改入参,和C/C++相反,如有修改是拷贝副本,处理后再return
30多个判断逻辑混乱,出现执行路径不可达或重复执行
31跨平台传输数值使用String方法,尤其是浮点数
32JNI/NDK的内存回收问题全局引用(Global reference),局部引用(Local reference),弱全局引用(Weak global reference)。

全局引用的生存期为创建之后,直到程序员显式的释放它。

局部引用的生存期为创建后,直到程序员显式的释放他们,或在当前上下文(可以理解成Java程序调用Native代码的过程)结束之后没有被JVM发现有JAVA层引用而被JVM回收并释放。

弱全局引用的生存期为创建之后,到程序员显式的释放他们或JVM认为应该回收它的时候(比如内存紧张的时候)进行回收而被释放。

33日志打印收集日志必须有统一工具进行打印收集
34使用高效序列化工具

FlatBuffer

35配置属性,使用SP导致阻塞SP数据不能太大,分开到不同XML。建议使用MMKV,datastore
36JUC的加锁容器,不是万全的这些只是对象函数是线程安全,但容器本容易被其他线程操作
37参数或成员变量的类泛化程度入参是context,但函数却要强制转换为activity,应该直接定义为activity
38对象复用如Android的Message 使用obtain获取对象,不是一味new Message
39序列化控制transient关键字,不需要序列化的属性前添加
40数据容器的结合场景使用如查询多的使用Arraylist或Vector,增删多的使用LinkedList,
41键值对容器取名把key -value 体现在 名字上
42equal 和hashcode修改判断,必须修改hashcode实现
43 Arrays.asList()把数组转换成lis
时,不能使用其修改集合相关的方
尤其和java.util.list不是一个类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值