代码评审

代码评审是⼀种系统的对别⼈代码的研究,和论⽂审校很类似。

代码评审有两个主要⽬的:

提升代码质量。 找出存在及潜在的bug,分析代码的清晰度以及代码是否严格遵循了当前⼯程的标准。

提升程序员的⽔平。

别写重复的代码(Don’t Repeat Yourself)

仅在需要的地⽅注释

⼀种重要的注释就是规格说明,通常出现在⽅法或者类的前部,⼀般会描述出类或⽅法的⾏为、参数、返回值、⽤ 法/例⼦等等。在Java中,规格说明通常按照Javadoc的标准来写:以 /** 开始,中间⽤ @ -标出参数和返回值, 最后以 */ 结尾。例如:

/**
* Compute the hailstone sequence.
* See http://en.wikipedia.org/wiki/Collatz_conjecture#Statement_of_the_problem
* @param n starting number of sequence; requires n > 0.
* @return the hailstone sequence starting at n and ending with 1.
* For example, hailstone(3)=[3,10,5,16,8,4,2,1].
*/
public static List<Integer> hailstoneSequence (int n) {
 ...
}

另⼀种重要的注释就是标出是从哪引⽤的别的代码。这在实际编程中是⾮常重要的,当你从别的⽹站上引⽤代码的 时候。

不易理解的代码应该被注释(例如实现⼀些特定的算法)

快速报错/失败(Fail-fast)

快速报错是指代码应该尽可能快的将其中的bug暴露出来。因为问题暴露的越早(越接近),其修复⼯作也会越容易。

避免幻数

除了0,1这⼏个数以外的常数都被称为“ 幻数”,因为它们就好像不知道从哪突然冒出来⼀样。

解决幻数的⼀个办法就是写注释,但是另⼀个更好的办法是声明⼀个具有合理名字的变量。

每⼀个变量有且只有⼀个⽬的

不要重利⽤参数,也不要重利⽤变量。

特别地,⽅法的参数不应该被修改

使⽤好的名称

好的⽅法名和变量名都是⽐较⻓⽽且能⾃我解释的。这种时候注释通常都不必要,因为名字就已经解释了它的⽤ 途。

不要使⽤全局变量

通常来说,我们应该使⽤参数传递和返回值⽽⾮全局变量,或者将它们放到你调⽤的⽅法的所属类中。

在快照图中的各种变量

在我们画快照图的时候,区别不同种类的变量是很重要的:

⽅法⾥⾯的局部变量

⼀个实例化对象中的实例化变量

⼀个类中的静态变量

当⽅法被调⽤的时候,局部变量产⽣,当⽅法返回时,局部变量消失。如果⼀个⽅法被多次同时调⽤(例如递 归),这些⽅法⾥⾯的局部变量互相独⽴,彼此不会影响。

当⼀个对象⽤ new 实例化后,对象中实例化的变量产⽣,当这个对象被垃圾回收时,这个变量消失。每⼀个实例 化对象都有它⾃⼰的实例化变量。

当程序启动时(更准确点说是包含该静态变量的类被加载的时候),静态变量就产⽣了,它会⼀直存活到程序结束。

class Payment {
 public double value;
 public static double taxRate = 0.05;
 public static void main(String[] args) {
 Payment p = new Payment();
 p.value = 100;
 taxRate = 0.05;
 System.out.println(p.value * (1 + taxRate));
 }
}

java技术审批流程文档 java技术评审_实例化

 ⽅法应该返回结果,⽽不是打印它