编程规范

命名

1.命名的准则是准确的表达意义。对于不同作用域的命名,可以选择不同的长度。一般来说,作用域小的变量(比如临时变量),可以选择短一些的命名方式。
2.可以借助类的信息来简化属性、函数的命名,利用函数信息来简化函数参数的命名。

class User{
  String name;  // not userName
  String address;  // not userAddress
}

3.命名要可读、可搜索,不要使用生僻单词来命名。
4.接口有两种命名方式:一种是接口带前缀“I”;另一种是在实现类中带后缀“Impl”。抽象类也有两种方式,一种是带前缀“Abstract”,一种是不带。重点是项目中要统一

注释

1.注释要包含三个方面:做什么、为什么、怎么做。对于复杂类和接口,还需要写明如何用。
2.注释并非越多越好。类和函数一定要写注释,函数内部注释相对少一些,一般都靠好的命名、提炼函数、解释性变量、总结性注释来提高代码可读性。

类中成员排列顺序

在Google Java规范中,依赖类按照字母序从小到大排列。类中先写成员变量后写函数。成员变量之间或函数之间,先写静态成员变量或函数,后写普通变量或函数,按照作用域大小依次排列。

把代码分割为单元块

当代码逻辑比较复杂时,建议将其提炼为类或者函数,但是如果提炼出的函数只有两三行,则不建议。

避免函数参数过多

函数包含3、4个参数是可接受的,大于5个时,会影响到代码可读性。解决方法有两种:

  • 考虑函数是否职责单一,是否需要将一个函数拆分为多个函数;
  • 将函数参数封装为对象;

不用函数参数控制逻辑

不要在函数中用boolean类型的标识参数来控制内部逻辑,这违背了单一职责原则和接口隔离原则,建议将其拆分为两个函数。

public void buyCourse(long userId, long courseId, boolean isVip);
// 将其拆分成两个函数
public void buyCourse(long userId, long courseId);
public void buyCourseForVip(long userId, long courseId);

移除过深嵌套层次

代码嵌套过深往往因为if-else、switch-case、for循环过度嵌套导致。建议嵌套不要超过两层,难以理解。解决方法:

  • 去掉(合并)多余if或else;
  • 使用continue、break、return,提前退出嵌套;
  • 调整执行顺序以减少嵌套;
  • 将部分嵌套逻辑封装成函数调用;

学会使用解释性变量

1.用常量取代魔法数字。

public double CalculateCircularArea(double radius) {
  return (3.1415) * radius * radius;
}

// 常量替代魔法数字
public static final Double PI = 3.1415;
public double CalculateCircularArea(double radius) {
  return PI * radius * radius;
}

2.使用解释性变量解释复杂表达式。

if (date.after(SUMMER_START) && date.before(SUMMER_END)) {
  // ...
} else {
  // ...
}

// 引入解释性变量后逻辑更加清晰
boolean isSummer = date.after(SUMMER_START)&&date.before(SUMMER_END);
if (isSummer) {
  // ...
} else {
  // ...
} 

你可能感兴趣的:(编程规范)