序号 问题 建议
1 圈复杂度 不超过10
2 synchronized的范围 控制范围,缩小粒度
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方法,尤其是浮点数
32 JNI/NDK的内存回收问题 全局引用(Global reference),局部引用(Local reference),弱全局引用(Weak global reference)。

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

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

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

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

FlatBuffer

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

CR总结--java函数CR相关推荐

  1. JavaScript与Java函数的比较

    JavaScript与Java函数的比较 学习了两天的JavaScript,会觉得这是一门和Java类似但又有很大不同的语言.很想将这种感受写下来并举例做一些分享. 函数成为了对象? 你很难想到,在学 ...

  2. android jni 回调 java_android linux线程通过JNI回调java函数 | 学步园

    Linux线程通过JNI回调JAVA函数 最近做的一个小工程需要用到回调函数,由linux层回调到java层,调试的时候会遇到一些问题,免得忘记,在这里记录一下: JNI的各种数据类型和数据结构我就不 ...

  3. android JNI层线程回调Java函数

    今天,简单讲讲android的jni如何使用jni回调java函数. 之前,我写了部分jni的博客,讲的都是如何从android的java代码调用jni的函数.最近,需要做一个新的功能,在jni的C函 ...

  4. Android之jni调用java函数总结

    1.先看之前jni的如何实现动态注册 先看我之间的例子 http://blog.csdn.net/u011068702/article/details/71375920 Android之JNI动态注册 ...

  5. nashorn js 调用 java_从nashorn(JDK 8 JavaScript引擎)调用char []输入参数调用Java函数?...

    我想从Oracle的nashorn JavaScript引擎中调用一个带有 char[] 输入参数的Java函数(非数组参数类型的函数对我来说没问题) . 如果我用JavaScript字符串文字调用J ...

  6. C++函数与java函数菜鸟级的对比理解

    C++函数与java函数菜鸟级的对比理解 转自:http://blog.csdn.net/stevenhu_223/article/details/9108571 Android源码底层的代码实现文件 ...

  7. jni实现回调java函数

    jni 实现回调java函数 一.JNI实现回调 通过JNI在Native层调用JAVA层的方法,来实现Native层向JAVA层传递消息. JNICallback.java [java] view ...

  8. java函数修饰符_Java 函数 面向对象,修饰符,类,构造方法,this

    1.函数 函数就是定义在类中,具有特定功能的一段小程序. 在面向对象编程的语言中,函数也叫方法. 2.函数的格式 修饰符 返回值类型 函数名(参数类型 实际参数,....) { 执行语句; retur ...

  9. Java函数的基本知识

    主要从Java函数的定义,函数的特点,函数的应用,函数的重载四个方面来讲解Java函数. 一.函数的定义     函数就是定义在类中的具有特定功能的一段独立程序,也称为方法. 注意:函数是定义在类中, ...

最新文章

  1. qpsk调制解调matlab_本科毕业设计课题—QPSK相干解调的MATLAB仿真(3)
  2. c语言struct_学习了C语言之后还是感觉不会编程,应该怎么办?其实你想错了!...
  3. Sublime Text 3(中文)在Windows下的配置、安装、运行
  4. Apache Log4j2,RASP 防御优势及原理
  5. C#.NET常见问题(FAQ)-如何使用2D绘图控件ZedGraph绘制坐标轴和坐标曲线
  6. Linux性能测试 命令大全
  7. apollo 配置中心_apollo-1:apollo配置中心单机模拟分布式部署
  8. Android用第三方jar包ClassNotFoundException:XXX in loader dalvik.system.PathClassLoader[/app/XX.apk]...
  9. 10-9-用户登录控制
  10. 各大浏览器保存密码的文件
  11. 使用Qt学习C语言编程1
  12. Go语言 windows环境安装
  13. Android手机无法上网怎么办,Android手机的WIFI连接上了却不能上网是怎么回事如何解决...
  14. 台式计算机网线,台式电脑如何连接宽带_台式电脑如何连接网线
  15. pgm概率图模型_概率图形模型(PGM)算法| 机器学习
  16. adb shell dumpsys activity activities调用信息简析
  17. 运用贝塞尔曲线绘制笔锋效果
  18. 淘宝运营 淘宝补流量的作用 如何安全补单
  19. 【目标检测】YOLOv5训练工具,简化训练准备过程
  20. SF26 | 适用于商品+股指的枢轴点趋势策略

热门文章

  1. influx安装和部署
  2. Qt - 奇葩问题 解决方案
  3. 天翼云联想云坚果云我应该选择哪一个呢?
  4. My97DatePicker 使用及配置
  5. 如何选择一款适合自己的医疗险,看保通来详解
  6. 新道格生日会 共悦生辰 美好同行
  7. 8.五言律诗和绝句的句型及平仄格式
  8. 《Guava Floats类》学习笔记
  9. 前端浏览器窗口直接展示pdf文件
  10. 基于web的在线考试系统的设计与开发