java code reviewer_Java Code review一些原则的原因探讨,下面这些原则都是为什么

感谢邀请,不过 Java 丢得有点久了,仅供参考

什么是 native 方法?

native 方法大概是指用 C/C++ 或其它直接编译成指令的那些方法,通常是生成 .dll(windows) 或 .so(linux),再由 Java 通过 JNI 调用的

caller 是什么?

一般来说 caller 是指方法的调用者,域应该是 field 的翻译,但翻译成“字段”更容易解理。比如

public class A { ... }

public class B {

public static A a;

// 本条推荐改为如下,并在 static 块中初始化

// public static final A a;

}

public class C {

// 这个就是 caller

public void doSomething() {

// 不管有意无意,这里是把值给改了

B.a = new A();

// 但如果在 B 里把 a 定义成 final 的,上句就会编译错误

}

}

而有了 bean 规范之后,这种字段通常会定义为 private,再加 setter 或 getter。

静态分析器是什么

静态分析器是指比编译器更严格的一个类似编译器的东西,从源代码直接分析出来有可能发生的逻辑错误。关于静态分析工具,可以找度娘问。我用过 FindBugs,还是有些作用,编程习惯不是很好的人,写出来的代码会有很多警告。

解释

整洁性

确定应用了代码格式化

代码格式整洁,才易于阅读,最典型的就是缩进规则

使用异常而不是返回码

异常和返回码是两种错误传递方式,异常的特点是立即中断跳出直到被 catch 住,返回码的特点是通过 return 返回一个错误代码。由于OOP的思想,要求方法尽可能简单,所以经常会存在我层级调用的情况,如果用异常,可以只在顶层处理异常,中途发生的任何异常都可以直接中断操作跳出来。但是如果用返回码,得一层层检查,代码繁琐,不易阅读。另外一点,Java的非 `RuntimeException` 必须在代码中申明处理(`catch` 或 `throws`),这样在编译阶段就能够进行一些逻辑异常处理的检查。

但个人对这个持保留态度,看情况而定,少量使用返回码也不是不可以的。

不要返回Null

不返回 `null` 主要是为了避免繁琐的判空操作,尤其是对集合类型的处理,除了判空(null) 还要判空(empty)。所以约定返回值都不为空,而是返回默认值,可以减少部分判断代码,也尽可能的避免了 `NullPointerException`。

C# 为了这个 null 的问题,扩展了很多语法和库,比如 `string.IsNullOrEmpty`,`??` 运算符以及 C#6.0 的空值条件运算符 `?.` 都是为了解决空问题而生的。

同样持保留态度。目前用得最多的只是返回集合不为 `null`,避免在 `foreach` 之前还要先判断。其它的视情况而定。

安全

避免对于一些不寻常行为的过分日志

日志操作也是要消耗资源的,日志操作越多越耗资源,所以看着办吧。

在任何情况下都释放资源(流,连接等等)

避免资源耗尽(诸如内存泄漏等)

把从不可信对象得到的输出作为输入来检验

保证数据有效性

为native方法定义包装类(而不是定义native方法为pulibc)

看看设计模式中的适配器,桥接和外观模式等

使public static域为final(避免调用方(caller)修改它的值)

这个上面已经说了

小心地缓存潜在的特权操作结果

不是很懂,不过缓存本身是需要小心使用的,因为缓存具有不持久性。另外,缓存的有效期和授权的有效期不一致可能造成安全问题。

只有在需要的时候才使用JNI

清单项目

更多地使用标准异常

标准异常基本上已经够用了。但适当的加入自己的异常类有助于代码流程管理。

避免使用finalizer

因为不确定什么时候会调用

使用枚举来代替int常量

枚举值限定,int 无法限定

使用executors而不是task和thread

大概是因为 Task 和 Thread 比较重吧。Java 的我不太了解,C# 的 Task 是轻量线程,所以轻量任务会使用 Task 代替 Thread。不过如果线程控制得好,对于重型任务使用 Thread 那是必须的。

查看静态代码分析器的报告来进行类的添加和修改

更严格的检查,仅供参考。如果机器都能准确的分析出所有错误,那也不需要人写程序了。个人认为对高级程序员用处不大,但用于团队中代码检查和习惯养成还是很有用的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值